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

本文深入探讨了简单工厂模式的概念、实现及应用,指出其在对象创建过程中的简洁性和潜在的扩展问题。通过示例代码,展示了如何通过工厂类根据参数选择不同的接口实例,以及这一模式在引入新业务模型时可能面临的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 简单工厂模式

简单工厂模式主要是利用分支(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/archive/2012/10/11/2720461.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值