第28章 VISTITOR模式
VISTITOR模式:允许在不更改现有类层次结构的情况下向其中增加新方法。
该模式如下:
- VISTITOR模式
- ACYCLIC VISTITOR模式
- DECORATOR模式
- EXTENSION OBJECT模式
VISTITOR模式
双重分发(Dual Dispatch)是VISTITOR模式的核心机制。
ACYCLIC VISTITOR模式
如果被访问层次结构非常不稳定,经常需要创建许多新的派生类,那么每当向被访问层次结构中增加一个新的派生类时,就必须要更改且重新编译基类以及他的所有派生类。
可以用ACYCLIC VISTITOR模式来解决这个问题。
ACYCLIC VISTITOR模式不适用于严格的实时系统,对于那些被访问的层次结构不稳定,且增量编译比较重要的系统来说,是不错的选择。
DECORATOR模式
VISITOR模式:使用这种方法可以在不改变现有类层次结构的情况向下其中增加新方法。而 DECORATOR模式也可以达到这个目标。
EXTENSION OBJECT模式
EXTENSION OBJECT模式也是另一种可以在不改变类层次结构的情况下向其中增加功能的方法。层次结构中的每个对象都持有一个特定扩展对象(extension object)的列表。每个对象也提供一个通过名字查询扩展对象的方法。扩展对象提供了操作原始层次结构对象的方法。
可以使用VISITOR模式结局的问题,往往也可以使用更简单的方法解决。
第28章 STATE模式
状态图的4个元素:起始状态、触发迁移的事件、终止状态以及要执行的动态。
实现技术
- 嵌套swith/case语句
- 解释迁移表
STATE模式
STATE模式:即具有嵌套swith/case语句的效率又具有解释迁移表的灵活性。
STATE模式中,派生类特有回指向上下文类的引用。派生类的主要功能时使用这个引用选择并调用上下文类中的方法。
STRATEGY模式的派生类不必持有指向上下文类的引用。并且也不需要去调用上下文类的方法。
所有STATE模式实例同样也是STRATEGY模式实例,但并不是所有STRATEGY模式实例都是STATE模式实例。
STATE模式:彻底分离了状态机的逻辑和动作。
网友评论