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.
  • 相关阅读:
    Java读写锁(ReentrantReadWriteLock)学习
    水平拆分和垂直拆分理解(未完)
    MySQL 主从复制
    sharding-JDBC 实现读写分离
    Linux查看程序端口占用情况
    sharding-jdbc 实现分表
    MySQL explain
    MySQL的七种join
    MySQL建立高性能索引策略
    Nginx企业级优化
  • 原文地址:https://www.cnblogs.com/student-note/p/6529661.html
Copyright © 2011-2022 走看看