Design Pattern: Facade 模式
學習是分享和合作式的!
轉載請注明出處:https://blog.csdn.net/wdzxl198/article/details/10472943;
文章摘自: https://www.riabook.cn/doc/designpattern/;
考慮要撰寫一個Web Mail程式,手上已經有一些已經開發好的元件(Component),像是開發Web Mail所需要的SMTP處理類、允許上傳附檔的FileUpload類,以及Web安全相關的API、其它相關的Package等等。
當拿到一些現成的元件,並打算在的應用程式中使用它們的話,不應該直接將這些元件耦合至您的應用程式上,例如:
上麵的作法會讓應用程式直接與多個元件耦合,這種作法不但與元件的依賴度高,日後要修改應用程式本身,或是更換掉依賴的元件都有困難。
應該定義一個Facade介麵,在當中定義好商務邏輯,例如寄送附件檔案的方法(method),然後在一個實現類中,組合您手邊的元件,使其達成您所 希望的商務行為,例如:
如上圖所示的,您的應用程式本身將不直接依賴於您的元件,而是依賴一個介麵,當您想要更改某個商務行為的實作時,隻要修改實現的類就可以了,應用程式本身 不用作任何修改。
Facade模式的結構如下:
Facade模式隱藏了各個元件之間的合作行為,以及元件本身的操作與設定細節,固而必失去了一些直接操作元件的方便性,所以對於喜歡追求 與操作細節的程式設計人員而言,不會很喜歡透過Facade來操作背後的元件,所以您的Facade介麵設計,通常要在元件依賴性及元件的支接操作性之間 作個平衡。
最後更新:2017-04-03 16:49:04