觀察者模式
當一個被觀察者改變,其他的觀察者物件都會收到通知並執行對應動作。
當協會(被觀察者)發布任務時,每一個關注協會訊息的冒險者(觀察者)會接收到訊息,並且做出對應的動作,發佈及訂閱就是觀察者模式的重點。
命令模式
客戶端不直接向命令執行者請求,而是將請由交由接收者,再由接收者轉交給命令執行者,而接收者可以將請求排成工作序列,亦可移除尚為執行的請求。
飲料店的服務生(Invoker)向冒險者(Client)接單(Command),目前飲料店有飲料跟甜點兩種產品,因此拆單成飲料訂單(Concrete Command)及甜點訂單(Concrete Command)兩種,訂單再交由廚房人員(Receiver)負責製作。
轉接器模式
透過介面轉換讓原不相容的介面能正常工作,例如:USB轉micro USB、三孔插座轉兩孔等。
今天冒險者們出門解任務,走到一半發現缺少會丟火球的法師,但也不可能折返,所以就將弓箭手的弓箭包上布,點火後再射出,透過布的轉換,就如同丟火球一樣。
表象模式
用一個介面包裝個個子系統,由介面與客戶端做溝通。
回到家中要看電影,就要先打開總電源,然後打開電視盒電源、開啟重低音放大器、打開液晶電視、打開DVD撥放器、打開PS3、放入藍光光碟、按播放鍵撥放影片...等,非常麻煩,外觀模式就好像一個超級遙控器,把所有動作都整合到當中,按一個按鍵就全部都開好,方便使用者操作。
MVC架構
- M: Model
- V: View
- C: Controller
網頁應用程式常會採取MVC架構,一般會用Controller對應一個網頁功能,Controller會呼叫多個Model交叉使用來處理資料,如果有個Service整合這些Model的功能讓Controller更容易取得資料,這個Service就是表象模式的設計。