2013-07-16 78 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代碼示例之間的矛盾是正確的。儘管如此,爲了回答你的問題,該圖顯示了純粹的方式(首選)來實現該模式。

仍然執行該示例中所看到的模式並不會破壞該模式的有用性。它不會破壞封裝或繼承。

使用私有成員和轉發調用只能通過底座(抽象)是,你可以在基類執行額外的行爲,比如你可以登錄或來電,您可以執行的一個優點任何操作你希望。這將減少子類中的重複。