工厂模式问题

工厂模式详解

文章目录

  • 问题
  • 详细内容
  • 总结

问题

 

一、工厂模式问题

1.1 本来直接就能创建的对象为何要增加一个工厂类呢?

1.2 工厂模式的目的是为了什么呢?

工厂模式的根本目的是减少项目变化所造成的影响,这一点要牢牢记住!

1.3 

二、详细内容

简单工厂模式
    定义
        由一个工厂对象决定创建出哪一种产品类的实例
        创建型模式
            不属于gof23
    使用
        详见代码工厂
    适用场景
        工厂类负责创建的对象较少
        客户端只需要传入工厂类的参数
        客户端不需要关心工厂类创建对象的逻辑
    优点
        只需要客户端传入参数,就可以获取到你想要的对象
        无须了解创建细节
        符合单一职责原则
    缺点
        职责过重
            从何说起呢?
        增加新产品时需要修改工厂类的判断逻辑
        违背了开闭原则
        不利于扩展过于复杂的产品结构
    经典案例

工厂方法模式
    定义
        定义一个创建对象的接口, 让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到了子类中进行
        属于创建型设计模式
    使用
    适用场景
        创建对象需要大量重复代码
        客户端或者应用层不依赖于产品类实例如何创建,实现等细节
        一个类通过其子类来指定创建哪个对象
    优点
        用户只需要关心所需产品对应的工厂,无须关心创建细节
        加入新产品符合开闭原则,提高了扩展性
    缺点
        类的个数容易过多,增加了代码结构的复杂度
        增加了系统的抽象性和理解难度
    经典案例

抽象工厂模式
    定义
        提供一个创建一系列相关或者相互依赖对象的接口,无须指定他们具体的类
        属于创建型设计模式
    使用
    适用场景
        客户端或者应用层不依赖于产品类实例如何创建,实现等细节
        创建对象需要大量重复代码
        提供一个产品类的库,所有的产品以同样的接口出现,从而使得客户端不依赖于具体实现
        产品族
            一系列的相关的产品, 整合到一起有关联性
            品牌
        产品等级
            同一个继承体系
    优点
        具体产品在应用层代码隔离,无须关心创建细节
        将一个系列的产品族统一到一起创建
    缺点
        规定了所有可能被创建的产品集合
        产品族中扩展新的产品困难,需要修改抽象工厂的接口
        增加了系统的抽象性和理解难度
    经典案例

 


三、总结

通过图解的方式-->表达出代码的意思.

代码内容可以参考

转载链接如下:

https://blog.csdn.net/zxt0601/article/details/52798423

https://www.cnblogs.com/xuxinstyle/p/9128865.html

https://blog.csdn.net/u011032983/article/details/52119015?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

https://blog.csdn.net/southjeff/article/details/79877412

https://www.kanzhun.com/mianshiti/2149/ 对比工厂模式三种方式

https://www.cnblogs.com/zhangchenliang/p/3700820.html 详细代码

https://www.jb51.net/article/85699.htm 

https://www.cnblogs.com/V1haoge/p/10755412.html

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值