zoukankan      html  css  js  c++  java
  • 简单实现抽象工厂模式

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

    程序运行结果:

  • 相关阅读:
    在autolayout中加入每个view的weight
    iOS 拨打电话
    20141211笔记(UIImageView 设置内容的Mode的方法UICollectionViewCell Custom的方法ios modal segue code)
    UILabel总结(转载)
    Error:duplicate files during packaging of APK app/build/output/apk
    《UNIX-Shell编程24学时教程》读书笔记Chap3,4 文件,目录操作
    《UNIX-Shell编程24学时教程》读书笔记Chap1,2 Shell基础,脚本基础
    《UNIX-Shell编程24学时教程》读书笔记chap7 变量
    《软件调试的艺术》读书笔记
    ubuntu环境准备
  • 原文地址:https://www.cnblogs.com/detective-blog/p/4928240.html
Copyright © 2011-2022 走看看