创建者模式---工厂模式

文章探讨了工厂模式在软件设计中的应用,包括简单工厂、工厂方法和抽象工厂模式,以及如何通过静态工厂和IOC(控制反转)来降低业务与对象创建的耦合。简单工厂虽然简化了调用,但仍然违反了开闭原则;工厂方法通过接口实现了更好的扩展性;抽象工厂则用于处理多个产品族的创建,但扩展时可能需要修改多个类。此外,还提到了使用properties文件进行简单的IOC实现。
摘要由CSDN通过智能技术生成

工厂模式,如果每次需要创建对象的时候都是直接new,那么会导致业务与这个对象的耦合,之后业务更改也很麻烦,违反了开闭原则,那么把对象的创建放在一个第三方的工厂对象,之后业务需要的对象就从工厂中获取,解除业务和对象之间的耦合

    ·简单工厂(不算在GOF23种设计模式中):
        - 封装对象的创建,按照传递的参数生产不同的对象类型,但是如果有新的需求还是要修
        改代码,只是修改所有业务的代码变成了修改单个工厂类的代码,所以还是违反了开闭原则

        - 在创建对象的方法上使用静态修饰就是静态工厂模式,也不算在GOF23种设计模式中,方便了业务层的调用,不用去new工厂对象

    ·工厂方法模式:
        - 把工厂生产对象的方法抽取为接口,各种的对象工厂去实现这个接口,返回产品,第三方工厂依赖于接口,调用的时候给予实现,业务需要增加的时候只需要创建新的对象生产工厂,满足开闭原则,但是每增加一个需求就要多一个生产类和产品类,增加复杂度

    ·抽象工厂模式:
        - 当需要工厂生产多个不同类型的产品时,就可以把产品根据作用域范围定义成不同的产品族,定义一个接口规定生产的单个产品的种类(也就是产品的抽象),一个产品族可以生产多个产品,生产工厂,实现这个接口,按照产品族的不同生产不同的产品组合

        - 但是当产品族需要增加一个新的产品的时候,所有的生产工厂包括接口都要修改,不符合开闭原则,所以在设定抽象工厂的时候就要考虑这个问题

    ·简单工厂模式+properties文件简单模拟ioc(不考虑单例和原型):
        - 在properties文件中列出所有可能会使用到的产品的名称和全类名,在工厂中定义一
        个静态map(value的泛型为产品的抽象,存的是实现),在静态代码块中读取properties文件的key和value,通过全类名获取字节码创建对象,存放到map,key就是properties中的key,需要获取对象的时候就传入一个产品的名称从map中取值返回即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值