简单实现抽象工厂模式

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();
    }
}

 

程序运行结果:

 

 

posted on 2015-11-01 17:30  体育委员  阅读(168)  评论(1编辑  收藏  举报