iT邦幫忙

2021 iThome 鐵人賽

DAY 21
2

  今天要介紹的模式是屬於結構型模式的一種,我個人覺得他還蠻簡單的,有點像是程式碼中的主要窗口,現在就來看看它會做哪些事吧!


問題情境與解析

  Facade,顧名思義它就是建築物的表面,而在程式中,就是我上面所講的使用者窗口,即使我們對窗口後面的運作情況一無所知,但我們還是可以透過這個窗口來做許多事情。

  舉個例子,當我們在電商平台下訂單時,如果有甚麼需求或是需要協助的地方,通常我們就會撥打客服電話來解決我們的問題,而客服就是電商平台的窗口,不管是要了解訂單的出貨情況,還是想更換商品需求,抑或是要取消訂單等等,客服就可以解決在電商平台可能會碰到的大小事。

  上面所說的客服就是一個類別,它包含了電商平台大多數的服務(Model),並且提供了對外使用者的窗口,如此一來,就可以讓使用者從其去處理在電商平台所遇到的問題。

Class Diagram

https://ithelp.ithome.com.tw/upload/images/20211006/20140743U26bVGue0X.png

Skeleton Code

class SubObject {
    public void operation() {
        // do something
    }
}
						.
						.
						.

class Facade {
    private SubObject subObject;
    
    public void subObjectOperation() {
        // invoke SubObject to work
        subObject = new SubObject();
        subObject.operation();
    }
    // It may have many object to do different things.
}

  通常子系統會隨著時間的推移變得越來越複雜,即使應用設計模式也會創造許多類別在系統上面。當遇到這樣的問題,我們就可以運用Facade來做為複雜系統功能的窗口,解決使用者在系統上遇到的情境與提供需要的功能。


除此之外,也歡迎大家走走逛逛關於我們團隊夥伴的文章

lu23770127 - SASS 基礎初學三十天

10u1 - 糟了!是世界奇觀!

juck30808 - Python - 數位行銷分析與 Youtube API 教學

SiQing47 - 前端?後端?你早晚都要全端的,何不從現在開始?


上一篇
IT鐵人DAY 20-Proxy 代理模式
下一篇
IT鐵人DAY 22-Mediator 中介者模式
系列文
淺談物件導向與Design Pattern介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言