[Day 04] 樣板模式,合成模式,狀態模式,代理模式


樣板模式

定義一套演算法的架構,但是細節可延遲到子類別再決定
冒險者進入迷宮探險須完成:

  1. 確認冒險者等級是否達到迷宮門檻
  2. 冒險者達到門檻才開始產生迷宮
  3. 冒險者進行探險
  4. 計算結果

從冒險者來到迷宮道離開門口結算成果,過程大致相同,此始可用一個模板來規範應該有甚麼過程。

掛勾

之前在裝飾者模式,裝飾者對被裝飾者進行裝飾,讓被裝飾者新增一些功能,而在模板模式中可以使用掛勾來新增功能。

合成模式

處理樹狀結構的資料
樹狀結構在程式語言中到處可見,例如:資料夾與檔案、,DOM結構。
冒險者協會在各城鎮成立子分會,本來的協會就變成總會,分會下還會有子分會,另外每個協會都有客服部、人資處等組織。
總會即為Root,而分會則是Node,客服部與人資處即為Leaf,在合成模式中,Component是一個抽象類別,所有節點包含(Root與Leaf)都必須繼承Component。

狀態模式

將物件的狀態封裝成類別,讓此物件隨著狀態改變能有不同的行為。
很多事物的行為模式會隨著狀態而改變,像是毛毛蟲只能在地上爬行,之後變成不會動的蛹,破蛹而出的蝴蝶能飛行,一開始我們會用if else 或 switch case去實現因狀態而改變的行為模式,但這不符合重構的原則,所以應將改變的狀態封裝成類別,讓實現不同行為的責任由狀態類別負責。

代理模式

為一個物件提供代理物件
代理物件常見用途有:

  • 虛擬代理
  • 遠程代理
  • 保護代理
  • 智慧代理
    要載入遊戲需要花很長時間,此時將會沒有畫面,因此可用一個代理類別,讓未完成讀取前,先顯示讀取中...請稍候,即可避免使用者誤以為遊戲壞掉或電腦當機。
#寫作松 #設計模式







你可能感興趣的文章

[Python] 好用的 concurrent.futures is a good way to speed up your function

[Python] 好用的 concurrent.futures is a good way to speed up your function

CS50 Form

CS50 Form

Web開發學習筆記20 — Express、EJS

Web開發學習筆記20 — Express、EJS






留言討論