简单实现抽象工厂模式
UML类图:
FoodFactory接口(抽象工厂)
interface FoodFactory { Burger CreateBurger(); Chicken CreateChicken(); Drink CreateDrink(); }
KFCFactory(具体工厂)
class KFCFactory:FoodFactory { public Burger CreateBurger() { return new KFC_Burger(); } public Chicken CreateChicken() { return new KFC_Chicken(); } public Drink CreateDrink() { return new KFC_Drink(); }
}
McDonaldFactory(具体工厂)
class McDonaldsFactory:FoodFactory { public Burger CreateBurger() { return new McDonalds_Burger(); } public Chicken CreateChicken() { return new McDonalds_Chicken(); } public Drink CreateDrink() { return new McDonalds_Drink(); } }
Food(抽象产品)
interface Food { void deal(); }
Burger(产品类型A)
class Burger:Food { public virtual void deal() { } }
Chicken(产品类型B)
class Chicken:Food { public virtual void deal() { } }
Drink(产品类型C)
class Drink:Food { public virtual void deal() { } }
KFC_Burger(具体产品A1)
class KFC_Burger:Burger { public override void deal() { Console.WriteLine("您的KFC汉堡"); } }
McDonalds_Burger(具体产品A2)
class McDonalds_Burger:Burger { public override void deal() { Console.WriteLine("您的麦当劳汉堡"); } }
KFC_Chicken(具体产品B1)
class KFC_Chicken:Chicken { public override void deal() { Console.WriteLine("您的KFC炸鸡"); } }
McDonalds_Chicken(具体产品B2)
class McDonalds_Chicken:Chicken { public override void deal() { Console.WriteLine("您的麦当劳炸鸡"); } }
KFC_Drink(具体产品C1)
class KFC_Drink:Drink { public override void deal() { Console.WriteLine("您的KFC饮料"); } }
McDonalds_Drink(具体产品C2)
class McDonalds_Drink:Drink { public override void deal() { Console.WriteLine("您的麦当劳饮料"); } }
Client(测试类)
class Client { static void Main(string[] args) { FoodFactory factory=new McDonaldsFactory(); Burger burger = factory.CreateBurger(); Chicken chicken = factory.CreateChicken(); Drink drink = factory.CreateDrink(); burger.deal(); chicken.deal(); drink.deal(); Console.ReadLine(); } }
程序运行结果: