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.
  • 相关阅读:
    【转】centos7关闭图形界面启动系统
    回顾测试入行以来的一些感受,浅谈对测试管理方面一些见解
    linux安装完全踩坑手册
    selenium 自动化测试个人总结(一)
    性能测试之数据库篇-查询(五 补充)
    性能测试之数据库篇-查询(四)
    性能测试之数据库篇-查询(三)
    性能测试之数据库篇-查询(二)
    性能测试之数据库篇-查询(一)
    性能测试之数据库篇-查询
  • 原文地址:https://www.cnblogs.com/student-note/p/6529661.html
Copyright © 2011-2022 走看看