工厂模式
2022-07-05 15:50:58 18 举报
AI智能生成
GoF23之工厂模式
作者其他创作
大纲/内容
参考文献
44 | 工厂模式(上):我为什么说没事不要随便用工厂模式创建对象?
45 | 工厂模式(下):如何设计实现一个Dependency Injection框架?
简单工厂
实现方案一
实现方法二,基于hashMap
使用场景
只有简单的new对象的场景
工厂方法
实现方案
使用场景
创建对象过程较为复杂,需要组合多方对象,全部放在一个工厂类里面,实现起来会导致工厂类高耦合
抽象工厂
工厂类的常用场景
第一种情况:类似规则配置解析的例子,代码中存在 if-else 分支判断,动态地根据不同的类型创建不同的对象。针对这种情况,我们就考虑使用工厂模式,将这一大坨 if-else 创建对象的代码抽离出来,放到工厂类中。
还有一种情况,尽管我们不需要根据不同的类型创建不同的对象,但是,单个对象本身的创建过程比较复杂,比如前面提到的要组合其他类对象,做各种初始化操作。在这种情况下,我们也可以考虑使用工厂模式,将对象的创建过程封装到工厂类中。
工厂模式的优点
封装变化:创建逻辑有可能变化,封装成工厂类之后,创建逻辑的变更对调用者透明。
代码复用:创建代码抽离到独立的工厂类之后可以复用。
隔离复杂性:封装复杂的创建逻辑,调用者无需了解如何创建对象。
控制复杂度:将创建代码抽离出来,让原本的函数或类职责更单一,代码更简洁。课堂讨论
spring工厂中对象的创建流程, 参考文献45
0 条评论
下一页