根據我玩了十多年的一款遊戲《夢幻西遊》來總結一下學習設計模式的一些筆記。
基本說明:
1、通常情況下,**中的主方法main()主要用來模擬客戶端傳輸到服務端的資料,例如引數等等。
入坑一款遊戲,從建立角色開始:
《夢幻西遊》老版本中包含十二個門派,分仙、魔、人三個種族,每個種族中有男女各兩個角色。
我比較中意劍俠客這個角色,所以以此舉例。
表示劍俠客這個角色類的**如下:
/**
* 劍俠客
**/public
class
swordsman
}
主方法中建立角色的**如下:
public
class
main
}
執行結果:
建立角色:劍俠客。。。
晃眼一看貌似沒有問題,但當我不玩劍俠客這個角色去玩其他角色的時候卻要修改主方法中的**。例如我想玩龍太子這個角色。(龍太子角色類**省略)
主方法中的**修改如下:
public
class
main
}
執行結果:
建立角色:龍太子。。。
問題:1、總共十二個角色,包含大量重複**,例如基本屬性:角色名稱、性別、種族等。
2、每次更換角色時都會修改主方法中的**,可以想象一下當你玩乙個遊戲想換角色時,還需要去修改源**的感受。
解決問題:
1、將角色這個類抽象出來單獨作為乙個抽象類,具體角色繼承這個抽象類;
2、提供乙個工廠類來建立具體角色;
**:
抽象角色類:
public
abstract
class
role
}
龍太子:
public
class
dragonprince
extends
role
}
劍俠客:
public
class
swordsman
extends
role
}
角色工廠類:
public
class
rolefactory
public
static role createrole
(string role)
throws exception
}}
主方法:
public
class
main
catch
(exception e)
}}
執行結果:
建立角色:劍俠客。。。
到目前為止,就基本完成了簡單工廠模式的內容。
類結構圖:
優點:
1、如果再次修改角色,只需要根據客戶端傳遞過來的引數決定建立什麼角色,不再需要更改主方法中的**。
2、當需要再新增新角色時只需要再建立乙個具體角色類繼承抽象角色類,然後只需要修改角色工廠類,多增加乙個case。
工廠設計模式一 簡單工廠模式
工廠設計模式實現了建立者和呼叫者的分離。類別 1.簡單工廠模式 2.工廠方法模式 3.抽象工廠模式 遵循的設計原則 1.ocp 開閉原則,open closed principle 乙個軟體的實體應當那個對擴充套件開放,對修改關閉 2.dip 依賴倒置原則,dependence inversion ...
工廠設計模式(一) 簡單工廠模式
工廠設計模式可分為 簡單工廠模式 工廠方法模式 抽象工廠模式 第一篇我們來聊聊 理解 假設某些例項具有相同的方法,可以根據引數的不同返回不同的例項,被建立的例項通常都具有共同的父類,那麼可以考慮使用簡單設計模式來實現。例如可以實用簡單工廠模式設計乙個可以建立不同幾何形狀 如圓形 方形和三角形等 的繪...
設計模式 一 工廠模式 簡單工廠
以前總覺得設計模式純屬扯淡,浪費精力,10 能搞定的事情非要寫那麼多的介面或者實現類.為什麼要用設計模式,開發有乙個重要的原則 對修改關閉,對擴充套件開放.因為如果把 全部都雜糅到乙個類中,第一 復用性太差,擴充套件性不強.第二,修改起來一改巨改,改動即意味著要增加測試人員工作量,且引入修改bug如...