设计模式工厂三姐妹

简介: 最近对于设计模式中的工厂三姐妹——大姐(抽象工厂)、二姐(工厂模式)、三姐(简单工厂),进一步学习了,以下是我的一些认识。

  最近对于设计模式中的工厂三姐妹——大姐(抽象工厂)、二姐(工厂模式)、三姐(简单工厂),进一步学习了,以下是我的一些认识。


一、简单工厂


 20141228205622203.jpg  


   运用了一个单独的类将创建实例的过程独立出来,这就是简单工厂类,如:简单运算工厂类,至于在运用的过程中,如果增加运算运算,需要修改运算工厂类,这就违背了


开放—封闭原则(尽可能使代码做到扩展的开放,更改的封闭,也就是对于程序的改动通过增加代码进行,而不是更改现有的代码)。


二、工厂模式


20141228205902166.jpg


   相对于以上的简单工厂增加了工厂子类,使一个类的实例话延迟到子类,这样在增加运算的时候只需要增加对应的运算工厂就可以了,这样就解决了简单工厂不符合开放-封闭原则的缺点。


简单工厂VS工厂方法


   工厂方法解决了简单工厂加Case判断的麻烦,但是每次增加运算需要在代码中增加相关的工厂 并且再去修改客户端,这样也是很复杂的。


   其实完全可以运用简单工厂+反射,这样就比单单的工厂方法简单多了。


三、抽象工厂


20150101095455656.jpg


   抽象工厂易于交换产品系列(一个应用只需要在初始化的过程中出现一次,所以改变应用的具体工厂会很容易),并且将创建实例过程与客户端分离,产品的具体类名也被具体的工厂实现分离。


   但是如果增加功能时,抽象工厂需要修改很多地方,这里就用一个简单工厂代替了所有具体工厂。


   问题又出来了,用简单工厂会遇到Case判断分支的麻烦,不过没关系,前面提到过运用反射这个问题就很容易解决了。


   对于工厂三姐妹目前只是了解了这些,相信会在以后的编程路上对她们的理解更加深刻,期待以后的再次相遇。

相关文章
|
4月前
|
设计模式 Java
设计模式之工厂
设计模式之工厂
|
24天前
|
设计模式 XML 数据格式
python之工厂设计模式
python之工厂设计模式
python之工厂设计模式
|
22天前
|
设计模式 JavaScript 前端开发
从工厂到单例再到策略:Vue.js高效应用JavaScript设计模式
【8月更文挑战第30天】在现代Web开发中,结合使用JavaScript设计模式与框架如Vue.js能显著提升代码质量和项目的可维护性。本文探讨了常见JavaScript设计模式及其在Vue.js中的应用。通过具体示例介绍了工厂模式、单例模式和策略模式的应用场景及其实现方法。例如,工厂模式通过`NavFactory`根据用户角色动态创建不同的导航栏组件;单例模式则通过全局事件总线`eventBus`实现跨组件通信;策略模式用于处理不同的表单验证规则。这些设计模式的应用不仅提高了代码的复用性和灵活性,还增强了Vue应用的整体质量。
14 0
|
30天前
|
设计模式 测试技术
依赖注入与工厂设计模式的区别
【8月更文挑战第22天】
30 0
|
3月前
|
设计模式 Java 编译器
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
|
2月前
|
设计模式 Java 开发者
工厂设计模式的实现与应用场景分析
工厂设计模式的实现与应用场景分析
|
4月前
|
设计模式
设计模式之工厂 Factory
设计模式之工厂 Factory
37 1
|
4月前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
4月前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
4月前
|
设计模式 Java 关系型数据库
Java设计模式--创建模式工厂--用披萨订购案例 详细讲解三种工厂模式
Java设计模式--创建模式工厂--用披萨订购案例 详细讲解三种工厂模式