Java设计模式之工厂模式
回顾
上期我们介绍了一个非常简单的设计模式,也是平时开发工作中最常见也是最常用的设计模式:单例模式。如果小伙伴们忘记了单例模式是什么样的,或者忘记了Java怎样优雅的实现单例模式的话,建议先阅读上一篇《Java设计模式——单例模式》
工厂模式
介绍
工厂顾名思义就是重复生产产品的地方,那么工厂模式就是生产实例对象的地方。
问题
在平时的开发中,我们会遇到很多实例对象创建的时候,那么遇到这种比较大的类,我们怎么办呢?
通常我们会这样
或者这样
思考
这样的代码会有什么样的问题呢?
- 代码中会到处出现各种类似的创建代码,不便于统一管理,一旦类的属性有变更维护成本非常大。
- 即使是这个类始终不变,不过如果使用的地方特别多,也就会出现很多重复代码
- 面向对象编程,应更关注于对象中有哪些方法可以使用,而不是如何构造这个对象
这里就引出了工厂模式的概念,将对象生成的逻辑合并到一个类中统一管理,那么这个类就是我们的工厂。
工厂模式的概念本身是一个模式的集合,对于经典的设计模式中,只有工厂方法模式和抽象工厂模式两种。还有一种描述也需要特别关注下,很多地方描述的简单工厂本身不是一个设计模式,是演化工厂方法模式中过度的工厂模式版本。把其看作一个工具类更合适一些。
简单工厂
实例
简单工厂
输出内容
可以看出来这个代码中实现了一个静态方法,通过此方法可以获取想要的实例对象。
实例对象——以类为模版产生的具体的实例对象
类对象——类本身
工厂方法模式
简介
工厂类通过实现生产的生产方法来生产具体的产品。(这里有一点必须要要注意,这里的工厂只生产一种产品)
实例
抽象工厂模式
简介
抽象出生产产品族的方法,然后通过继承方式来实现各产品的实现方法。
实例
总结
- 简单工厂——用来生产同一等级结构中的任意产品
- 工厂方法——用来生产同一等级结构中的固定产品
- 抽象工厂——用来生产不同产品族的全部产品
网友评论