zoukankan      html  css  js  c++  java
  • c++策略模式(Strategy Method)

    别人的博客再讲策略模式时都会讲三国,策略类就是赵云的锦囊,锦囊里装着若干妙计。在打仗时想要用什么妙计,直接从锦囊里去取。

    锦囊类:

    class context
    {
    public:
    	context(IStrategy *isstrategy);
    	~context();
    	void Operate(void);
    private:
    	IStrategy *m_strategy;
    	
    };
    
    context::context(IStrategy *isstrategy):m_strategy(isstrategy)
    {
    }
    context::~context()
    {
    }
    void context::Operate(void)
    {
        m_strategy->Operate();
    }

    妙计的接口:

    class IStrategy
    {
    public:
    	IStrategy(void){};
    	virtual ~IStrategy(void){};
    	virtual void Operate(void) = 0;
    };
    

    走后门妙计:

    class BackDoor:public IStrategy
    {
    public:
        BackDoor(void);
        ~BackDoor(void);
        void Operate(void);
    };
    BackDoor::BackDoor(void)
    {
    }
    BackDoor::~BackDoor(void)
    {
    }
    void BackDoor::Operate(void)
    {
        std::cout <<"走后门了!" <<std::endl;
    }

    开绿灯妙计:

    class GreenLight:public IStrategy
    {
    public:
        GreenLight(void);
        ~GreenLight(void);
        void Operate(void);
    };
    GreenLight::GreenLight(void)
    {
    
    }
    GreenLight::~GreenLight(void)
    {
    
    }
    void GreenLight::Operate(void)
    {
        std::cout << "开绿灯了!" << std::endl;
    }

    主函数:

    int main()
    {
        std::cout << "#1策略"<<std::endl;
        context*context1 =  new context(new BackDoor());
        context1->Operate();
    
        std::cout << "#2策略"<<std::endl;
        context*context2 =  new context(new GreenLight());
        context2->Operate();
    
        getchar(); 
        return 0;
    }

    运行结果:

    #1策略
    走后门了!
    #2策略
    开绿灯了!

    ---恢复内容结束---

  • 相关阅读:
    linux之用户和用户组管理详解
    linux权限管理
    flink 1.7.2 安装详解
    TJI读书笔记13-内部类
    TJI读书笔记12-接口
    TJI读书笔记11-多态
    TJI读书笔记10-复用类
    TJI读书笔记09-访问控制权限
    TIJ读书笔记08-数组的初始化和可变长参数形参
    TJI读书笔记07-初始化
  • 原文地址:https://www.cnblogs.com/onlycxue/p/3428001.html
Copyright © 2011-2022 走看看