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.
  • 相关阅读:
    转贴"三个月内通过Adsense赚一百万美金"
    今天申请了Google Adsense
    Asp.Net Core 多样性的配置来源
    Identity第二章
    Identity第一章
    Identity第三章 Authorize原理解析
    async和await
    ASP.Net Core简介
    【学习笔记】后缀数组 SA
    题解 [NOI2009] 植物大战僵尸
  • 原文地址:https://www.cnblogs.com/student-note/p/6529661.html
Copyright © 2011-2022 走看看