三两句记录设计模式(1)——简单工厂模式

 简单工厂模式

简单工厂模式主要是利用分支(if..else 或者 switch..case),然后根据外部参数来决定客户端调用的具体对象。

而外部参数基本上是客户端传递进相应的工厂类(当然也可以不靠客户端传递,直接根据资源文件来确定)。

在更多的时候工厂类是直接返回个接口实例或者基类对象,这也意味着工厂类只负责对象创建,而基本不参与具体的逻辑处理或调用具体逻辑

简单的实例代码:

View Code
    public interface MaterialInfo
    {
        DataTable GetMaterialInfo();
    }

    //简单工厂:通过工厂来确定换回真正要调用的接口实例
    public class SimpleFactory
    {
        private MaterialInfo info;

        public MaterialInfo GetInfo(int type)
        {
            switch (type)
            {
                case 1:
                    info = new RawMaterialsInfo();
                    break;
                case 2:
                    info = new SemifinishedInfo();
                    break;
                default:
                    break;
            }
            return info;
        }
    }


    //原料
    public class RawMaterialsInfo : MaterialInfo
    {
        public DataTable GetMaterialInfo()
        {
            return new DataTable();
        }
    }

    //半成品
    public class SemifinishedInfo:MaterialInfo
    {
        public DataTable GetMaterialInfo()
        {
            return new DataTable();
        }
    }

    //客户端调用
    public class ClientSimpleFatory
    {
        public DataTable GetMaterialInfo()
        {
            SimpleFactory single = new SimpleFactory();
            MaterialInfo info = single.GetInfo(1);
            return info.GetMaterialInfo();
        }
    }

可以看得出来,简单工厂比较简单,并没有什么复杂难懂的地方。

但是也应该看到此方式有些瑕疵(这是真的吗?),那就是如果有新的业务模型进来时,必须修改工厂类的分支判定。从而会导致分支判定不断的增加(这不OOP..)

至于客户端的修改,那是基本上无可避免的(参数放在资源文件上除外)

原文地址:https://www.cnblogs.com/haiyidao/p/2720461.html