设计模式之命令模式[自我理解]
2012-12-11 10:34
197 查看
interface ICommand
{
virtual void Execute() = 0;
};
class ConcreteCmd : public ICommand
{
Worker m_impl;
ConcreteCmd(Implement *pImpl):m_impl(pImpl){}
void Excute()
{
m_impl->DoWork();
}
};
class Caller
{
ICommand m_pCmd;
void AddCmd(ICommand* pCmd){ m_pCmd = pCmd;}
void Action(){ m_pCmd->Execute();}
}
class Client
{
ConcreteCmd *m_pCmd;
Client(Worker impl){ m_pCmd = new ConcreteCmd(impl); }
ICommand GetCmd(){ return m_pCmd;}
SetCmd(ConcreteCmd* pCmd){ m_pCmd = pCmd; }
}
void main()
{
Client client = new Client(new Worker);
Caller caller = new Caller();
caller.add(client.GetCmd());
caller.Action():
}
要点:核心是Caller和ICommand,他们实现了任务和实现的分离,Client是辅助,实现接口实现的可适配
看设计模式不能抠字眼,一眼飘过,理解它的抽象和复用机制就行
{
virtual void Execute() = 0;
};
class ConcreteCmd : public ICommand
{
Worker m_impl;
ConcreteCmd(Implement *pImpl):m_impl(pImpl){}
void Excute()
{
m_impl->DoWork();
}
};
class Caller
{
ICommand m_pCmd;
void AddCmd(ICommand* pCmd){ m_pCmd = pCmd;}
void Action(){ m_pCmd->Execute();}
}
class Client
{
ConcreteCmd *m_pCmd;
Client(Worker impl){ m_pCmd = new ConcreteCmd(impl); }
ICommand GetCmd(){ return m_pCmd;}
SetCmd(ConcreteCmd* pCmd){ m_pCmd = pCmd; }
}
void main()
{
Client client = new Client(new Worker);
Caller caller = new Caller();
caller.add(client.GetCmd());
caller.Action():
}
要点:核心是Caller和ICommand,他们实现了任务和实现的分离,Client是辅助,实现接口实现的可适配
看设计模式不能抠字眼,一眼飘过,理解它的抽象和复用机制就行
相关文章推荐
- 设计模式-观察者模式自我理解
- 深入理解JavaScript系列(34):设计模式之命令模式
- php设计模式自我理解
- 我所理解的设计模式——对象行为之命令(Comand)模式
- 我所理解的设计模式(C++实现)——命令模式(Command Pattern)
- 极速理解设计模式系列:17.命令模式(Command Pattern)
- 深入理解JavaScript系列(34):设计模式之命令模式
- 关于设计模式的自我理解
- 极速理解设计模式系列:17.命令模式(Command Pattern)
- 深入理解JavaScript系列(34):设计模式之命令模式
- 深入理解JavaScript系列(34):设计模式之命令模式详解
- 设计模式自我理解_java篇
- 深入理解JavaScript系列(34):设计模式之命令模式
- GOF23设计模式之命令模式(Command)的理解与实现
- 我所理解的设计模式(C++实现)——命令模式(Command Pattern)
- 《模式——工程化实现及扩展》(设计模式C# 版)《命令模式 Command》——“自我检验" 参考答案
- 我所理解的设计模式(C++实现)——命令模式(Command Pattern)
- 设计模式---命令模式(理解)
- 深入理解JavaScript系列(34):设计模式之命令模式
- 设计模式之命令模式学习理解