c#設計模式3抽象工廠模式(Abstract Factory)
阿新 • • 發佈:2018-04-18
bubuko write col 實現 trac 技術分享 返回 lin 子類
#region 坦克系列 abstract class Tank { abstract public void Go(); } /// <summary> /// 越野車 /// </summary> class YueyeTank : Tank { public override void Go() { Console.WriteLine("我是一顆中國造越野車,來踏平不老實的小邪惡國家!"); } } /// <summary>/// 主站坦克 /// </summary> class ZhuzhanTank : Tank { public override void Go() { Console.WriteLine("我是一顆中國造主站坦克,來踏平不老實的小邪惡國家!"); } } #endregion
#region 炸彈系列 abstract class Bomb { abstract public void BaoZha(); } /// <summary>/// 導彈 /// </summary> class DaodanBomb : Bomb { public override void BaoZha() { Console.WriteLine("我是一顆中國造導彈,來轟炸不老實的小邪惡國家!"); } } /// <summary> /// 核彈 /// </summary> class HedanBomb : Bomb { public override void BaoZha() { Console.WriteLine("我是一顆中國造核彈,來轟炸不老實的小邪惡國家!"); } } #endregion
// 備戰 class Make { //裝備 private Bomb bomb; private Tank tank; //制造加工 public Make(ChinaFactory factory) { bomb = factory.CreateBomb(); tank = factory.CreateTank(); } //開始打仗 public void WarStar() { //炸彈類爆炸 bomb.BaoZha(); //戰車類前進 tank.Go(); } }
#region 中國兵工廠 abstract class ChinaFactory { //裝甲車制造車間 public abstract Tank CreateTank(); //炸彈知道車間 public abstract Bomb CreateBomb(); } //兵工廠前期制造 class QianqiFactory : ChinaFactory { public override Bomb CreateBomb() { //導彈 return new DaodanBomb(); } public override Tank CreateTank() { //越野車 return new YueyeTank(); } } //兵工廠後期制造 class HouqiFactory : ChinaFactory { public override Bomb CreateBomb() { //核彈 return new HedanBomb(); } public override Tank CreateTank() { //主站坦克 return new ZhuzhanTank(); } } #endregion
class Program { static void Main(string[] args) { //大戰前期 ChinaFactory qianqiMake = new QianqiFactory(); Make qianqi = new Make(qianqiMake); qianqi.WarStar(); //點任意鍵,進行後期攻勢!! Console.ReadKey(); //大戰後期 ChinaFactory houqiMake = new HouqiFactory(); Make houqi = new Make(houqiMake); houqi.WarStar(); Console.WriteLine("釣魚島是中國的,神聖不可侵犯!小邪惡國家,滾開!!"); Console.ReadLine(); } }
這裏首先以一個生活中抽象工廠的例子來實現一個抽象工廠,
然後再給出抽象工廠的定義和UML圖來幫助大家更好地掌握抽象工廠模式,
同時大家在理解的時候,可以對照抽象工廠生活中例子的實現和它的定義來加深抽象工廠的UML圖理解。
抽象工廠模式比其它工廠模式更加抽象,抽象工廠模式適用與多個抽象類的情況下,
通過工廠返回多個抽象類中你需要得到的具體子類實例。
舉例闡述抽象工廠模式:
假如中國對邪惡國家開戰。
中國裝備:炸彈類,坦克類,來消滅邪惡國家。
炸彈類:導彈,核彈;
坦克類:越野車,主站坦克;
戰略:
前期中國兵工廠生產:導彈,越野車,打擊邪惡國家。
後期中國兵工廠生產:核彈,主站坦克,毀滅邪惡國家。
c#設計模式3抽象工廠模式(Abstract Factory)