设计模式的理解:命令模式 (command) -ag凯发k8国际
ag凯发k8国际
收集整理的这篇文章主要介绍了
设计模式的理解:命令模式 (command)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
命令模式(command pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
命令看成是函数方法,而这函数方法在不同的业务含义中,其参数个数,参数的数据类型,返回值可能不统一。把用户可以触发的功能当成一个命令,把这个“命令”封装成一个对象。把对象抛给接收者,让接收者处理其中的命令。而这个接收者可以接收命令的抽象类。这样接收者就可以间接的统一处理 接口不统一的函数方法了。
以添加商品到购物车,删除购物车中的商品,支付购物车的商品为例:
class icommand{ public:virtual void execute() = 0; };class commodity{ public:string id; };class shoppingcart{ public:string cartid;list而调用起来也是很方便的
receiver user_; shoppingcart usercart_;void executecommand(icommand * c){user.action(c);} void mainprocess(){commodity commodity1("book");commodity commodity1("game");addcommoditytocart addcommoditytocart(commodity1,usercart_);removecommoditytocart removecommoditytocart(usercart_,"book");paycart paycart(usercart_);user_.addcommand(&addcommoditytocart);user_.addcommand(&removecommoditytocart);executecommand(&paycart) ; //输出 购物车支付game; }命令模式的实现,让receiver 对象成功处理 参数类型不同,参数个数不同,返回值不同的多个方法。当然在现如今已有更方便的实现方式可以满足 “接收处理 格式不统一的函数” 。 例如 模板/泛型 ,重载括号运算符(函数对象)等方式实现。毕竟虚函数的运行时绑定(动态绑定)要比编译时绑定的性能要低些。
总结
以上是ag凯发k8国际为你收集整理的设计模式的理解:命令模式 (command)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 设计模式的理解: 职责链模式 (chai
- 下一篇: 设计模式的理解: 访问器模式 visit