C++設計模式:策略模式

=策略模式:定義了算法家族,分別封裝起來,然後定義一個統一的藉口,算法之間可以相互替換。使用該模式可以讓算法的變化不影響到使用算法的客戶。

模式實現:策略模式具體實現時通常與工廠模式相結合,定義一個工廠類,來決定初始化哪個算法。

代碼如下:

#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();
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章