策略模式
Posted osbreak
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了策略模式相关的知识,希望对你有一定的参考价值。
策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
本模式使得算法可独立于使用它的客户而变化。
也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。
用策略模式来封装算法,效果比较好。
class STReplace { public: virtual void Replace() = 0; }; //三种具体的替换算法 class LRU_Replace : public STReplace { public: void Replace() { cout<<"LRU"<<endl; } }; class FIFO_Replace : public STReplace { public: void Replace() { cout<<"FIFO"<<endl; } }; class Random_Replace: public STReplace { public: void Replace() { cout<<"Random"<<endl; } };
//Cache需要用到替换算法 enum RA {LRU, FIFO, RANDOM}; //标签 class Cache { private: STReplace *m_ST; public: Cache(enum RA ra) { if(ra == LRU) m_ST = new LRU_Replace(); else if(ra == FIFO) m_ST = new FIFO_Replace(); else if(ra == RANDOM) m_ST = new Random_Replace(); else m_ST = NULL; } ~Cache() { delete m_ST; } void Replace() { m_ST->Replace(); } };
int main() { Cache cache(LRU); //指定标签即可 cache.Replace(); return 0; }
以上是关于策略模式的主要内容,如果未能解决你的问题,请参考以下文章