它在設計模式說 - 可複用面向對象軟件的元素書:橋樑模式 - 在Java中編譯的好處?
在情況下,只有一個實現(一個對一個),創建一個 抽象實施者類是不這是一個退化案例 的橋樑模式; 抽象和Implementor之間有一對一的關係。但是,當一個類的實現改變不會影響其現有客戶端 時,這種分離仍然是 ,也就是說,它們不應該被重新編譯爲 ,只是重新鏈接。
我懷疑編譯時間的好處,因爲我無法想象Java中的實現更改使其重新編譯其超類(本例中爲抽象)的情況。
例如,如果我們有X Y延伸,並在客戶端做:
Y y = new X();
在X的變化並不意味着y的重新編譯(當然,如果我們不希望改變方法簽名X
的)正是使用橋接模式時,同樣的事情:
YAbstraction yabstraction = new YRefinedAbstraction(new XImplementor());
在XImplementor的變化並不意味着YAbstraction的重新編譯。
所以,據我所知,這種好處不會發生在Java和一對一=>不需要橋接模式。
也許在其他語言中重新編譯子類強制超類的更改?像SmallTalk和C++一樣?
您的意見是什麼?
OP的觀點特定於實現者類只有一個實現的情況。 –
感謝這個發展良好的解釋:)所以我總結:WindowImp中的更改只會引發Window中的更改並且不需要重新編譯客戶端=>因爲只有Window類的方法體被更改(以適應新的WindowImp)而不是Window Class的方法簽名,對嗎? – Mik378
@ Mik378是的,沒錯。 –