2013-07-16 41 views
1

如果你看一下wikipedia bridge entry存在这样一个矛盾的UML diagram描绘了实施者为私有变量,但伴随的Java代码示例有它非私营和精致抽象利用它作为下面的代码片断:桥梁模式:实施者应该是私人的吗?

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

drawingAPI实现者并从精制抽象访问。

而且在同一个维基百科条目LePUS3图意味着精致的抽象只能调用操作从抽象而不是从实施者任何方法。

参见下面的计算器答案,其中实施者是专用的: https://stackoverflow.com/a/319792/480894

所以应该实施者是私人和精致的抽象只能调用从抽象的方法呢?

回答

1

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

仍然执行该示例中所看到的模式并不会破坏该模式的有用性。它不会破坏封装或继承。

使用私有成员和转发调用只能通过底座(抽象)是,你可以在基类执行额外的行为,比如你可以登录或来电,您可以执行的一个优点任何操作你希望。这将减少子类中的重复。