#include<iostream>
using namespace std;
class ReplaceAlgorithm
{
public:
virtual void Replace() = 0;
};
//三种具体的替换算法
class LRU_ReplaceAlgorithm :public ReplaceAlgorithm
{
public:
void Replace(){
cout << "Least Recently used replace algorithm" << endl;
}
};
class FIFO_ReplaceAlgorithm :public ReplaceAlgorithm
{
public:
void Replace(){
cout << "First in First out replace algorithm" << endl;
}
};
class Random_ReplaceAlgorithm:public ReplaceAlgorithm
{
public:
void Replace()
{
cout << "Random replace algorithm" << endl;
}
};
//enum RA { LRU, FIFO, RANDOM }; //标签
//class Cache
//{
//private:
// ReplaceAlgorithm *m_ra;
//public:
// Cache(enum RA ra)
// {
// if (ra == LRU)
// m_ra = new LRU_ReplaceAlgorithm();
// else if (ra == FIFO)
// m_ra = new FIFO_ReplaceAlgorithm();
// else if (ra == RANDOM)
// m_ra = new Random_ReplaceAlgorithm();
// else
// m_ra = NULL;
// }
// ~Cache() { delete m_ra; }
// void Replace() { m_ra->Replace(); }
//};
template <class RA>
class Cache
{
private:
RA m_ra;
public:
Cache(){}
~Cache(){}
void Replace()
{
m_ra.Replace();
}
};
int main()
{
//Cache cache(LRU);//暴露了算法的定义
//cache.Replace();
Cache<Random_ReplaceAlgorithm> cache;
cache.Replace();
system("pause");
return 0;
}
策略模式
最新推荐文章于 2024-10-14 20:08:00 发布