• 最简单的工厂模式


    你想如果有多个类似的类,我们就需要实例化出来多个类。这样代码管理起来就太复杂了。 
    这个时候你就可以采用工厂方法来封装这个问题。

     public interface IProduct { }
        public class ConcreteProductA : IProduct { }
        public class ConcreteProductB : IProduct { }
    
        public class Factory
        {
            public IProduct Create()
            {
                // 工厂决定到底实例化哪个子类。
                return new ConcreteProductA();
            }
        }

    那么再延伸下,如果我要生产B怎么办

    一般我们会想到,加入参数,好,说到参数,你想怎么加,呵呵,设计模式的作者给我一个例子,我觉得非常好,如果我们一般人,我想多数这么做

      public IProduct Create(IProduct product)
            {
                //判断B是否实现了接口
                //B b = new B();
                //if (b.GetType().GetInterface("ISay") != null)
                //{
                //    //如果实现了接口“ISay”,...
                //}
                // 工厂决定到底实例化哪个子类。
             
            }

    但是我觉得作者这里给出了另外一种思维模式,让我们看看

     public enum Category
        {
            A,
            B
        }
    
        public static class ProductFactory
        {
            public static IProduct Create(Category category)
            {
                switch (category)
                {
                    case Category.A:
                        return new ConcreteProductA();
                    case Category.B:
                        return new ConcreteProductB();
                    default:
                        throw new NotSupportedException();
                }
            }
        }

    并不是说这样非常好,但是这种思想还是值得在某些地方借鉴

  • 相关阅读:
    MySQL wrapped 连接池
    学习 memcache 心得
    memcachedb 加 memcached engine无法提高 示例检索的查询速度
    memcached+Mysql(主从) php 编程
    动态设置select与radio的默认值
    JSTL 自定义
    坦克大战 Java版
    给超链接加onclick事件
    图片查看器C#
    备份删除还原数据库
  • 原文地址:https://www.cnblogs.com/wangchuang/p/2986267.html
Copyright © 2020-2023  润新知