zoukankan      html  css  js  c++  java
  • 抽象工厂

      

      抽象工厂,通过名字就知道它是一个抽象的类,并且用这个类来充当一个容器.用来返回抽象对象.

      比如,我开了一个店,用来卖小吃的.我卖鸭脚和鸭脖

        abstract class YaBo//鸭脖
        {
            public abstract void Create();
        }
        abstract class YaJiao//鸭脚
        {
            public abstract void Create();
        }

      因为现在只是我一个在卖,所以比较简单,所以我创建了一个工厂,用来创建我们需要的对象

        abstract class Factory//抽象工厂
        {
            public abstract YaBo CreateYaBo();
            public abstract YaJiao CreateYaJiao();
        }

      但现在是我们还没有自己的鸭脖,鸭脚的实现

        class CongQingYaBo : YaBo
        {
            public override void Create()
            {
                Console.WriteLine("重庆的鸭脖子有点辣.0.");
            }
        }
        class CongQingYaJiao:YaJiao
        {
            public override void Create()
            {
                Console.WriteLine("重庆鸭脚也很辣.......");
            }
        }

      现在就差一步了,那就是实现我们自己的工厂

        class CongQingYaBoFactory:Factory
        {
    
            public override YaBo CreateYaBo()
            {
                return new CongQingYaBo();
            }
    
            public override YaJiao CreateYaJiao()
            {
                return new CongQingYaJiao();
            }
        }

      这样一个工厂方法就写好了,我们来看一下怎么使用

                Factory f = new CongQingYaBoFactory();
                f.CreateYaBo().Create();

       假如现在我们的店越做越大,开了广东的分店,那么我们就需要实现广东鸭脖鸭脚的实现

        class GuanDongYaBo : YaBo
        {
    
            public override void Create()
            {
                Console.WriteLine("广东鸭脖好甜..........");
            }
        }
        class GuanDongYaJiao : YaJiao
        {
    
            public override void Create()
            {
                Console.WriteLine("广东鸭脚好甜..........");
            }
        }
        class GuanDongYaJiaoFactory : Factory
        {
    
            public override YaBo CreateYaBo()
            {
                return new GuanDongYaBo();
            }
    
            public override YaJiao CreateYaJiao()
            {
                return new GuanDongYaJiao();
            }
        }
    Hold on, everything is possible.
  • 相关阅读:
    五星评价
    IE9以上 CSS文件因Mime类型不匹配而被忽略 其他浏览器及IE8以下显示正常
    js时间显示设置
    jq手风琴---点击时列表的左边距逐渐减小
    break continue return
    validate插件:验证密码没有空格 用户名是5-10位 至少包含数字和大小写字母中的两种字符
    Commons IO
    Servlet & JSP
    设计模式
    Table of Contents
  • 原文地址:https://www.cnblogs.com/student-note/p/6529661.html
Copyright © 2011-2022 走看看