【问题标题】:Bridge pattern: should the implementor be private?桥接模式:实现者应该是私有的吗?
【发布时间】:2013-07-14 21:11:34
【问题描述】:

如果您查看wikipedia bridge entry,就会发现UML diagram实现程序 描述为私有变量,但随附的Java 代码示例将其视为非私有变量,并且refined abstraction 在下面的代码片段中使用它:

 // low-level i.e. Implementation specific
   public void draw() {
        drawingAPI.drawCircle(x, y, radius);
   }

drawingAPIimplementor,可从 refined abstraction 访问。

同样在同一个维基百科条目中,LePUS3 图暗示精炼的抽象应该只调用来自抽象的操作,而不是来自实现者的任何方法.

另请参阅以下 stackoverflow 答案,其中 实施者 是私有的: https://stackoverflow.com/a/319792/480894

那么implementor应该是私有的并且refined abstractions只调用abstraction中的方法吗?

【问题讨论】:

    标签: design-patterns


    【解决方案1】:

    您对图表和 java 代码示例之间的矛盾是正确的。尽管如此,为了回答您的问题,该图向您展示了实现该模式的纯粹方式(首选)

    仍然实现示例中的模式不会破坏模式的实用性。它不会破坏封装或继承。

    使用私有成员并仅通过基类(抽象)转发调用的一个优点是您可以在基类中强制执行其他行为,例如,您可以记录调用或者您可以执行您想要的任何操作。这将减少子类中的重复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-15
      • 2014-11-08
      • 2011-07-21
      • 2020-10-28
      • 2016-05-06
      • 2017-10-23
      • 2011-04-21
      • 1970-01-01
      相关资源
      最近更新 更多