简单实现抽象工厂模式

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

程序运行结果:

原文地址:https://www.cnblogs.com/detective-blog/p/4928240.html