1、策略模式(Strategy)

 1 //抽象接口  
 2 class ReplaceAlgorithm  
 3 {  
 4 public:  
 5     virtual void Replace() = 0;  
 6 };  
 7 //三种具体的替换算法  
 8 class LRU_ReplaceAlgorithm : public ReplaceAlgorithm  
 9 {  
10 public:  
11     void Replace() { cout<<"Least Recently Used replace algorithm"<<endl; }  
12 };  
13   
14 class FIFO_ReplaceAlgorithm : public ReplaceAlgorithm  
15 {  
16 public:  
17     void Replace() { cout<<"First in First out replace algorithm"<<endl; }  
18 };  
19 class Random_ReplaceAlgorithm: public ReplaceAlgorithm  
20 {  
21 public:  
22     void Replace() { cout<<"Random replace algorithm"<<endl; }  
23 };  

 

 1 //Cache需要用到替换算法  
 2 enum RA {LRU, FIFO, RANDOM}; //标签  
 3 class Cache  
 4 {  
 5 private:  
 6     ReplaceAlgorithm *m_ra;  
 7 public:  
 8     Cache(enum RA ra)   
 9     {   
10         if(ra == LRU)  
11             m_ra = new LRU_ReplaceAlgorithm();  
12         else if(ra == FIFO)  
13             m_ra = new FIFO_ReplaceAlgorithm();  
14         else if(ra == RANDOM)  
15             m_ra = new Random_ReplaceAlgorithm();  
16         else   
17             m_ra = NULL;  
18     }  
19     ~Cache() { delete m_ra; }  
20     void Replace() { m_ra->Replace(); }  
21 };  

 

1 int main()  
2 {  
3     Cache cache(LRU); //指定标签即可  
4     cache.Replace();  
5     return 0;  
6 }  

 

转载于:https://www.cnblogs.com/leiqiu/p/4685243.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值