Prototype主调方是根据要执行哪个子类来创建调用对象.
如:
Class Base;
Class A:Base;
Class B:Base;
调用方式
main()
{
//
Base *ptr = new A;
ptr->doAction();
}
而Command也差不对,只是把对象传了进去再调用.本质上看不出什么区别
如:
class Command
{
public:
virtual ~Command(){}
virtual void Execute() = 0;
};
class ConcreateComand: public Command
{
virtual void Execute()
{
if (NULL != m_pReceiver)
{
m_pReceiver->Action();
}
}
};
省...
调用方式
int main(){
Receiver* pReceiver = new Receiver();
Command* pCommand = new ConcreateComand(pReceiver);
Invoker* pInvoker = new Invoker(pCommand);
pInvoker->Invoke();