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.
  • 相关阅读:
    初学者之 Git 和 Github
    80端口与8080端口是两种不同的端口吗?他们到底有什么区别和联系?
    redis 基础(一) 初步了解redis
    spring 基础(四)浏览器跨域访问+拦截器(Interceptor)
    mysql商业版和社区版
    spring 基础(五) spring mvc RESTful
    解决idea控制台打印乱码问题
    springBoot 基础-拓展(二) 记录一些常用的配置文件
    SpringBoot 基础(零) SpringBoot和Spring
    springBoot 基础-拓展(一) spring-boot-starter
  • 原文地址:https://www.cnblogs.com/student-note/p/6529661.html
Copyright © 2011-2022 走看看