[Day 03] 觀察者模式,命令模式,轉接器模式,表象模式


觀察者模式

當一個被觀察者改變,其他的觀察者物件都會收到通知並執行對應動作。
當協會(被觀察者)發布任務時,每一個關注協會訊息的冒險者(觀察者)會接收到訊息,並且做出對應的動作,發佈及訂閱就是觀察者模式的重點。

命令模式

客戶端不直接向命令執行者請求,而是將請由交由接收者,再由接收者轉交給命令執行者,而接收者可以將請求排成工作序列,亦可移除尚為執行的請求。
飲料店的服務生(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就是表象模式的設計。

#寫作松 #設計模式







你可能感興趣的文章

初試啼聲,只用原生 JS 跟 CSS 寫「口罩地圖 」Ep.03

初試啼聲,只用原生 JS 跟 CSS 寫「口罩地圖 」Ep.03

[ week11 ] 實戰練習-部落格(以 PHP 實作前、後端)

[ week11 ] 實戰練習-部落格(以 PHP 實作前、後端)

Day 8 - Function & Caesar Cipher

Day 8 - Function & Caesar Cipher






留言討論