复合模式和访问者模式似乎都与统一处理树数据结构的接口有关。何时以及为什么要使用其中一个?
答案 0 :(得分:1)
Composite
模式允许客户端统一处理复合和单个对象。对于一个实例,大多数UI组件框架使用复合模式。这实际上是part-whole
包含层次结构。您可以在实例的文档编辑器中将文本对象和图形视为相同。
Visitor
模式表示要对对象结构的元素执行的操作。 Visitor
允许您定义新操作,而无需更改其操作元素的类。考虑一个Composite
的设备层次结构。例如,机箱可以包含驱动器和平面板,总线可以包含卡,机柜可以包含机箱等。您可能想要计算库存详细信息并对设备的总价格进行一些折扣。这可以使用Visitor
来实现,并且可以在不改变设备层级的情况下添加一些新的操作/算法。您只需添加一个新的Visitor
即可。这就是Visitor
模式的美妙之处。
因此,这是两种模式之间的关系:Visitors
可用于对Composite
模式定义的对象结构应用操作。