桥模式:实施者应该是私有的吗?

时间:2013-07-16 15:27:35

标签: design-patterns

如果查看wikipedia bridge entryUML diagram实现者描述为私有变量存在不一致,但随附的Java代码示例将其作为非变量-private和精简抽象使用它,如下面的代码片段所示:

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

drawingAPI实现者,可以从精简抽象中访问。

同样在同一个维基百科条目中,LePUS3图表意味着精炼抽象应仅调用抽象中的操作,而不是来自的任何方法>实现者

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

实现者应该是私有的,精炼抽象只能从抽象中调用方法吗?

1 个答案:

答案 0 :(得分:1)

你对图表和java代码示例之间的矛盾是正确的。不过,为了回答你的问题,该图表显示了实现模式的纯粹方式(首选)

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

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