您的位置:首页 > 其它

简单实现抽象工厂模式

2015-11-01 17:30 148 查看
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();
}
}


程序运行结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: