【问题标题】:Operation in composite design pattern vs add a new visitor in visitor design pattern复合设计模式中的操作 vs 在访问者设计模式中添加新访问者
【发布时间】:2020-12-18 07:32:36
【问题描述】:

Eric Gamma 的设计模式一书中解释说,复合结构可以声明操作:

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

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

那么,有什么理由选择在组合中添加一个操作,而不是为每个所需的操作创建一个新的访问者?还是反过来?

【问题讨论】:

    标签: oop design-patterns architecture composite visitor-pattern


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多