读书笔记

大话设计模式读书笔记-28访问者模式

2020-11-22  本文已影响0人  QuietHeart
bigtalk.jpg

第28章 男人和女人——访问者模式

概念

访问者模式表示一个作用于某对象结构中的各元素的操作。它可以使你在不改变元素类的前提下,定义作用于这些元素的新操作。

即:将类的操作,变为特定对象,不同在增加新操作的时候修改类,而是增加新操作,就定义新对象,作为数据参数传递给固定类。

场景

数据结构固定的情况下(例如人类只有男人和女人),将操作从数据结构中分离出来(比如成功、失败等的反映定义成类对象传给数据实现不同操作),将数据和其操作实现了解耦,又可以方便地让操作扩展与演化。

其中,用到了双分派技术,第一次是不同者的分派(不同操作的访问类对象,传递给被操作的固定类对象),将不同的操作定义为访问者对象传给正确的被操作对象,第二次是操作中不同动作的分派(不同的固定类对象,会以不同方式使用访问者类),访问者对象中对应不同的数据对象的操作供其调用。双分派意味着执行的操作取决于请求的种类和接受者的类型。

实现

实现类图:

总结起来即:

使用类图:

双分派,发生在 o.Accept(v) 调用的时候,假设o对象对应的固定类有A和B,而v对象对应了许多不同操作相关的访问者类,第一次分派就是将v传递给了正确的o(是A或者B),第二次分配就是调用到正确的v函数(是A的操作还是B的操作)。

特征

举例

上一篇下一篇

猜你喜欢

热点阅读