首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 抽象工廠模式 — 雞腿與漢堡 (2) — 程式碼實作與擴充性展示

     編輯:關於C語言

UML 圖解與新廠商擴充

圖示即經典 Abstract Factory 結構。新增「必勝客」只需加入:PizzaHutFactory、PizzaHutHamburger、PizzaHutChickenLeg,消費者端完全不變(組態切換)。飲料不在本模式範圍(需其他模式組合)。

完整程式碼實作


public abstract class KuaiCanFactory { // 快餐工廠
    public abstract IChickenLeg EatChickenLeg();
    public abstract IHamburger EatHamburger();
}
public class MDLFactory : KuaiCanFactory { // 麥當勞
    public override IChickenLeg EatChickenLeg() => new MDLChickenLeg();
    public override IHamburger EatHamburger() => new MDLHamburger();
}
public class KDJFactory : KuaiCanFactory { // 肯德基
    public override IChickenLeg EatChickenLeg() => new KDJChickenLeg();
    public override IHamburger EatHamburger() => new KDJHamburger();
}
// 產品介面
public interface IHamburger { void GetHamburger(); }
public interface IChickenLeg { void GetChickenLeg(); }
// 具體產品
public class MDLHamburger : IHamburger { public void GetHamburger() => Console.WriteLine("麥當勞漢堡"); }
public class KDJHamburger : IHamburger { public void GetHamburger() => Console.WriteLine("肯德基漢堡"); }
public class KDJChickenLeg : IChickenLeg { public void GetChickenLeg() => Console.WriteLine("肯德基雞腿"); }
public class MDLChickenLeg : IChickenLeg { public void GetChickenLeg() => Console.WriteLine("麥當勞雞腿"); }
// 客戶端
static void Main() {
    KuaiCanFactory kc = new KDJFactory();
    IChickenLeg leg = kc.EatChickenLeg(); leg.GetChickenLeg();
    IHamburger burger = kc.EatHamburger(); burger.GetHamburger();
    kc = new MDLFactory();
    leg = kc.EatChickenLeg(); leg.GetChickenLeg();
    burger = kc.EatHamburger(); burger.GetHamburger();
}

輸出結果

肯德基雞腿
肯德基漢堡
麥當勞雞腿
麥當勞漢堡

吃飽囉~希望別吃壞肚子,有誤請留言指正!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved