樣板模式
定義一套演算法的架構,但是細節可延遲到子類別再決定
冒險者進入迷宮探險須完成:
- 確認冒險者等級是否達到迷宮門檻
- 冒險者達到門檻才開始產生迷宮
- 冒險者進行探險
- 計算結果
從冒險者來到迷宮道離開門口結算成果,過程大致相同,此始可用一個模板來規範應該有甚麼過程。
掛勾
之前在裝飾者模式,裝飾者對被裝飾者進行裝飾,讓被裝飾者新增一些功能,而在模板模式中可以使用掛勾來新增功能。
合成模式
處理樹狀結構的資料
樹狀結構在程式語言中到處可見,例如:資料夾與檔案、,DOM結構。
冒險者協會在各城鎮成立子分會,本來的協會就變成總會,分會下還會有子分會,另外每個協會都有客服部、人資處等組織。
總會即為Root,而分會則是Node,客服部與人資處即為Leaf,在合成模式中,Component是一個抽象類別,所有節點包含(Root與Leaf)都必須繼承Component。
狀態模式
將物件的狀態封裝成類別,讓此物件隨著狀態改變能有不同的行為。
很多事物的行為模式會隨著狀態而改變,像是毛毛蟲只能在地上爬行,之後變成不會動的蛹,破蛹而出的蝴蝶能飛行,一開始我們會用if else 或 switch case去實現因狀態而改變的行為模式,但這不符合重構的原則,所以應將改變的狀態封裝成類別,讓實現不同行為的責任由狀態類別負責。
代理模式
為一個物件提供代理物件
代理物件常見用途有:
- 虛擬代理
- 遠程代理
- 保護代理
- 智慧代理
要載入遊戲需要花很長時間,此時將會沒有畫面,因此可用一個代理類別,讓未完成讀取前,先顯示讀取中...請稍候,即可避免使用者誤以為遊戲壞掉或電腦當機。