我们将Command 和Visitor归为“行为变化”模式。
Command 命令模式与函数对象十分类似,但在C++主流框架中,函数对象(function object)应用的更为广泛。
文章目录
1. “行为变化”模式
- 在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化。“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合
行为一般是一段代码,代码和对象之间的绑定关系是极其紧密的,是一种天然的编译式绑定。类的成员函数分为两类,一类是虚函数,一类是非虚的或者静态函数,第二类函数是地址编译时静态的绑定,虚函数是运行时的绑定,这些绑定实际上是非常紧耦合的。“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合。
1.1 典型模式
-
Command
-
Visitor
2. 动机( Motivation )
-
在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合一一比如需要对行为进行“记录、撤销/重(undo/redo)、事务”等处理,这种无法抵御变化的紧耦合是不合适的。
-
在这种情况下,如何将“行为请求者”与“行为实现者”解耦 ?将一组行为抽象为对象,可以实现二者之间的松耦合。
3. 模式定义
将一个请求(行为)封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作
Command模式是一种行为设计模式,它将请求封装为对象,使请求者与实现者解耦。本文详细介绍了Command模式的动机、定义、结构,并提供了代码示例,阐述了其与C++函数对象的区别和在C++中的应用情况。
订阅专栏 解锁全文
1637

被折叠的 条评论
为什么被折叠?



