复合模式和访客模式之间的区别是什么?

时间:2018-05-28 14:32:51

标签: design-patterns

复合模式和访问者模式似乎都与统一处理树数据结构的接口有关。何时以及为什么要使用其中一个?

1 个答案:

答案 0 :(得分:1)

Composite模式允许客户端统一处理复合和单个对象。对于一个实例,大多数UI组件框架使用复合模式。这实际上是part-whole包含层次结构。您可以在实例的文档编辑器中将文本对象和图形视为相同。

Visitor模式表示要对对象结构的元素执行的操作。 Visitor允许您定义新操作,而无需更改其操作元素的类。考虑一个Composite的设备层次结构。例如,机箱可以包含驱动器和平面板,总线可以包含卡,机柜可以包含机箱等。您可能想要计算库存详细信息并对设备的总价格进行一些折扣。这可以使用Visitor来实现,并且可以在不改变设备层级的情况下添加一些新的操作/算法。您只需添加一个新的Visitor即可。这就是Visitor模式的美妙之处。

因此,这是两种模式之间的关系:Visitors可用于对Composite模式定义的对象结构应用操作。