首页 > 其他 > 详细

简单实现抽象工厂模式

时间:2015-11-01 17:50:15      阅读:297      评论:0      收藏:0      [点我收藏+]

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

 

程序运行结果:

技术分享

 

 

技术分享

简单实现抽象工厂模式

原文:http://www.cnblogs.com/detective-blog/p/4928240.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!