=策略模式:定義了算法家族,分別封裝起來,然後定義一個統一的藉口,算法之間可以相互替換。使用該模式可以讓算法的變化不影響到使用算法的客戶。
模式實現:策略模式具體實現時通常與工廠模式相結合,定義一個工廠類,來決定初始化哪個算法。
代碼如下:
#include<iostream>
using namespace std;
enum RA{LRU,FIFO,RANDOM};
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_ReplaceAlgprithm :public ReplaceAlgorithm
{
public:
void Replace()
{
cout << "Random replace algorithm" << endl;
}
};
class Cache
{
private:
ReplaceAlgorithm*m_ra;
public:
Cache(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_ReplaceAlgprithm();
}
else
m_ra = NULL;
}
~Cache()
{
delete m_ra;
m_ra = NULL;
}
void Replace()
{
m_ra->Replace();
}
};