设计模式:工厂模式
零、分类
工厂模式分为静态工厂、抽象工厂模式、工厂方法模式
一、工厂模式优点:
1.可以使代码结构清晰,有效地封装变化。在编程中,产品类的实例化有时候是比较复杂和多变的,通过工厂模式,将产品的实例化封装起来,使得调用者根本无需关心产品的实例化过程,只需依赖工厂即可得到自己想要的产品。
2.对调用者屏蔽具体的产品类。如果使用工厂模式,调用者只关心产品的接口就可以了,至于具体的实现,调用者根本无需关心。即使变更了具体的实现,对调用者来说没有任何影响。
3.降低耦合度。产品类的实例化通常来说是很复杂的,它需要依赖很多的类,而这些类对于调用者来说根本无需知道,如果使用了工厂方法,我们需要做的仅仅是实例化好产品类,然后交给调用者使用。对调用者来说,产品所依赖的类都是透明的。
二、工厂方法模式组成:
1.抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
2.具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
3.抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
4.具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
5.客户端:只需要调用工厂接口就可以使用了,不需要了解产品细节
三、区别
1.静态工厂(简单工厂)没有抽象工厂角色,只有具体的工厂角色,存在局限性。
2.抽象工厂模式与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;
而抽象工厂模式则需要面对多个产品等级结构。
四、代码详情见GitHub:
https://github.com/firefoxer1992/DesignPatternsDemo/tree/master/src/main/java
参考博客:
相关文章
- 设计模式的C语言应用-访问者模式-第九章
- java设计模式2--抽象工厂模式(Abstract Factory)
- 【设计模式】策略模式
- 不一样的职责链模式(设计模式一)
- C++设计模式之1-工厂模式
- 设计模式复习--简单工厂模式
- 《Android源码设计模式》--抽象工厂模式
- 简单工厂模式(设计模式02)
- 简单工厂模式(设计模式02)
- atitit.设计模式(1)--—职责链模式(chain of responsibility)最佳实践O7 日期转换
- 熬夜学Java语言-设计模式之简单工厂模式
- C++设计模式:策略模式
- 实践GoF的设计模式:访问者模式
- 我以订披萨为例,给朋友详细讲了Java设计模式的3种工厂模式
- 23种设计模式(3):抽象工厂模式
- 设计模式之简单工厂模式(Simply Factory)摘录
- 设计模式 State模式 机器的情况下用自己的主动性
- Java 设计模式:实战访问者模式「模拟家长与校长,对学生和老师的不同视角信息的访问场景」
- c#设计模式-适配器模式
- 【设计模式】实际场景解释策略模式与工厂模式的应用
- 设计模式C++实现——工厂模式