oop - 复合设计模式中的操作与在访问者设计模式中添加新访问者

标签 oop design-patterns architecture composite visitor-pattern

Eric Gamma 的《设计模式》一书解释说,复合结构可以声明操作: enter image description here

此类操作由非叶运算符递归传播。

另一方面,通过使用访问者设计模式来创建访问复合结构并执行操作的访问者,我们可能会得到相同的结果。

那么,是否有任何理由选择在组合中添加操作而不是为每个所需操作创建一个新访问者?或者反之亦然?

最佳答案

我就不描述这些图案的含义了,这样优秀的已经有很多了descriptions 。但我会说这些模式互补彼此。访问者允许我们添加新操作而不更改可以执行这些操作的对象的类,但是如果我们可以更改这些类,我们就可以在不使用访问者的情况下向它们添加新操作,它一切都取决于上下文。

有时在开发阶段我们无法预测将对复合对象执行哪些操作,但我们可以通过向复合对象添加 accept() 方法来提供将来添加此类功能的可能性复合对象的接口(interface),它采用访问者的接口(interface)并为当前对象调用其 visit() 方法。

关于oop - 复合设计模式中的操作与在访问者设计模式中添加新访问者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63649480/

相关文章:

c++ - 具有不同接口(interface)的对象集合

c++ - C++中嵌套函数的设计模式

architecture - 如何学习正式的自上而下的软件架构方法?

c - 在面向对象范例中使用 C 语言对微处理器进行编程,是否可取?

java - 继承java,我该怎么办?

java - java父类(super class)调用的效果

node.js - react : Set up a large number of routes and have GET request render correctly on web server

c# - 桥接器与适配器设计模式

ios - MLKit iOS : Undefined symbols for architecture armv7

java - 我应该允许对象从其接口(interface)中删除自身吗? OOD 正确吗?