最简单的工厂模式

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

 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();
            }
        }
    }

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

posted on 2013-03-28 10:58  HOT SUMMER  阅读(201)  评论(0编辑  收藏  举报

导航