zoukankan      html  css  js  c++  java
  • 设计模式:command模式

    目的:将命令设计成类的形式,并可以组织成队列

    优点:

    • 在需要的情况下,可以比较容易地将命令记入日志
    • 可以容易的实现对请求的撤销和重做
    • 由于新的具体命令类不影响其他的命令类,因此增加新的具体命令类很容易

    例子:

    class Receiver
    {
    public:
    	void action()
    	{
    		cout << "do action." << endl;
    	}
    };
    
    class Icommand
    {
    public:
    	virtual void excute() = 0;
    };
    
    class CommondFirst: public Icommand
    {
    	Receiver* receive;
    public:
    	CommondFirst(Receiver* receive)
    	{
    		this->receive = receive;
    	}
    
    	void excute()
    	{
    		cout << "CommondFirst: " << endl;
    		receive->action();
    	}
    };
    
    class CommondSecond: public Icommand
    {
    	Receiver* receive;
    public:
    	CommondSecond(Receiver* receive)
    	{
    		this->receive = receive;
    	}
    
    	void excute()
    	{
    		cout << "CommondSecond: " << endl;
    		receive->action();
    	}
    };
    
    class Invoker
    {
    	vector<Icommand*> v;
    public:
    	
    	void addCommand(Icommand* c)
    	{
    		v.push_back(c);
    	}
    	
    	void clear()
    	{
    		v.clear();
    	}
    	
    	void Notify()
    	{
    		for(vector<Icommand*>::iterator it=v.begin(); it!=v.end(); ++it)
    		{
    			(*it)->excute();
    		}
    	}
    };
    
    int main() 
    {
    	Receiver* r = new Receiver();
    	CommondFirst* cf = new CommondFirst(r);
    	CommondSecond* cs = new CommondSecond(r);
    	
    	Invoker* invoker = new Invoker();
    	invoker->addCommand(cf);
    	invoker->addCommand(cs);
    	invoker->Notify();
    	
    	return 0;
    }
  • 相关阅读:
    验证码破解 | Selenium模拟登陆12306
    验证码破解 | Selenium模拟登录知乎
    Numpy | 16 算术函数
    Numpy | 15 数学函数
    Numpy | 14 字符串函数
    Numpy | 13 位运算
    Numpy | 12 数组操作
    Numpy | 11 迭代数组
    Numpy | 10 广播(Broadcast)
    Numpy | 09 高级索引
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11434819.html
Copyright © 2011-2022 走看看