如果查看wikipedia bridge entry,UML 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
实现者应该是私有的,精炼抽象只能从抽象中调用方法吗?
答案 0 :(得分:1)
你对图表和java代码示例之间的矛盾是正确的。不过,为了回答你的问题,该图表显示了实现模式的纯粹方式(首选)。
仍然实现示例中所示的模式不会破坏模式的有用性。它不会破坏封装或继承。
使用私有成员并仅通过基本(抽象)转发呼叫的一个优点是,您可以在基类中强制执行其他行为,例如,您可以记录呼叫,或者您可以执行你想要的任何操作。这将减少子类中的重复。