1

如果您查看wikipedia bridge 条目,则存在不一致之处,即UML 图实现者描述为私有变量,但随附的 Java 代码示例将其作为非私有变量,并且精炼的抽象在以下代码中使用它分段:

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

实现者,可以从提炼的抽象drawingAPI中访问。

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

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

那么实现者应该是私有的并且精炼的抽象只调用抽象中的方法吗?

4

1 回答 1

1

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

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

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

于 2013-07-16T23:05:27.877 回答