命令模式最简单实现

命令模式命令模式:把一系列的函数,编程命令
具体解释:把一系列的函数,用类封装起来,使用的时候通过调用,封装函数的类在调用函数,这样做有如何好处:
好处(价值):函数可以被装载,使对该函数的调用更灵活。
下面是代码(c++):
#include
#include

using namespace std;

// 抽象层
class Invoker
{
public:
int m_a;
int m_b;
Invoker(int a,int b)
{
m_a = a;
m_b = b;
cout<<“a:”<<a<<" b:"<<b<<"\n";
}
};

class Command
{
public:
Invoker& m_Invoker;
Command(Invoker& invoker):m_Invoker(invoker)
{

}
virtual int Execute()=0;

};
// 具体层

class CommandAdd: public Command
{
public:
CommandAdd(Invoker& invoker):Command(invoker)
{

}
virtual int Execute(){
	cout<<"a+b="<<m_Invoker.m_a + m_Invoker.m_b<<"\n";
	return m_Invoker.m_a + m_Invoker.m_b;
}

};
class CommandMultiplication: public Command
{
public:
CommandMultiplication(Invoker& invoker):Command(invoker){}
virtual int Execute(){
cout<<“a*b=”<<m_Invoker.m_a * m_Invoker.m_b<<"\n";
return m_Invoker.m_a * m_Invoker.m_b;
}
};

class Receiver
{
private:
Command& m_Add;
Command& m_Multiplication;
public:
Receiver(Command& add,Command& multiplication ):m_Add(add),m_Multiplication(multiplication){}
virtual int add(){
return m_Add.Execute();
}
virtual int Multiplication()
{
return m_Multiplication.Execute();
}
};

// 调用层
int main()
{
Invoker invoker(5,6);

CommandAdd cmd_add(invoker);
CommandMultiplication cmd_mult(invoker);

Receiver receiver(cmd_add,cmd_mult);

receiver.add();
receiver.Multiplication();

int a;
cin>>a;
return 0;

}

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/87854696