Facade模式

考慮您要撰寫一個Web Mail程式,您手上已經有一些已經開發好的元件(Component),像是開發Web Mail所需要的SMTP處理類、允許上傳附檔的FileUpload類,以及Web安全相關的API、其它相關的Package等等。

當您拿到一些現成的元件,並打算在您的應用程式中使用它們的話,您不應該直接將這些元件耦合至您的應用程式上,例如:
Facade

上面的作法會讓您的應用程式直接與多個元件耦合,這種作法不但與元件的依賴度高,日後要修改應用程式本身,或是更換掉依賴的元件都有困難。

您應該定義一個Facade介面,在當中定義好商務邏輯,例如寄送附件檔案的方法(method),然後在一個實現類中,組合您手邊的元件,使其達成您所 希望的商務行爲,例如:
Facade

如上圖所示的,您的應用程式本身將不直接依賴於您的元件,而是依賴一個介面,當您想要更改某個商務行爲的實作時,只要修改實現的類就可以了,應用程式本身 不用作任何修改。

Facade模式的結構如下:
Facade

Facade模式隱藏了各個元件之間的合作行爲,以及元件本身的操作與設定細節,固而必失去了一些直接操作元件的方便性,所以對於喜歡追求 與操作細節的程式設計人員而言,不會很喜歡透過Facade來操作背後的元件,所以您的Facade介面設計,通常要在元件依賴性及元件的支接操作性之間 作個平衡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章