敏捷軟件開發(fā) - 原則、模式與實踐 —— 設(shè)計模式(三)FACADE模式和MEDIATOR模式

本文為敏捷軟件開發(fā) - 原則、模式與實踐系列的一部分。

本文對應(yīng)原書第15章

介紹

這兩個模式有著共同的目的。它們都把某種策略施加到另外這一組對象上。FACADE模式從上面施加策略,而MEDIATOR模式則從下面施加策略。FACADE模式的使用是明顯且受限的,而MEDIATOR模式的使用則是不明顯且不受限的。

FACADE模式

圖1

MEDIATOR模式

圖2

圖2展示了QuickEntryMediator的結(jié)構(gòu)。用一個JList和一個JTextField構(gòu)造了一個QuickEntryMediator類的示例。QuickEntryMediatorJTextField注冊了一個匿名的DocumentListener。每當文本發(fā)生變化時,這個listener就調(diào)用textFieldChanged方法。接著,該方法在JList中查找以這個文本為前綴的元素并選中它。

JListJTextField的使用者并不知道該MEDIATOR的存在。它安靜地呆著,把它的策略施加在那些對象上,而無需它們的允許或者知曉。

結(jié)論

如果策略涉及范圍廣泛并且可見,那么可以使用FACADE模式從上面施加該策略。另一方面,如果策略隱蔽并且有針對性,那么MEDIATOR模式是更好的選擇。Facade通常是約定的關(guān)注點。每個人都同意去使用該facade而不是隱藏于其下的對象。另一方面,Mediator則對用戶是隱藏的。它的策略是既成事實的而不是一項約定事務(wù)。

完整內(nèi)容請查看敏捷軟件開發(fā) - 原則、模式與實踐系列

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容