美文网首页设计模式
设计模式之简单工厂模式

设计模式之简单工厂模式

作者: DLight | 来源:发表于2020-02-24 22:11 被阅读0次

一.简单工厂:

目录:

1. 简介

2. 代码实践

3. JDK简单工厂模式分析

1.简介

定义:由一个工厂对象决定创建出哪一种产品类的实例。广义来讲,也属于工厂方法模式。下一篇文章会提到工厂方法模式。

类型:创建型

适用场景:工厂类负责创建的对象比较少;

客户端只知道传入工厂类的参数,不关心如何创建对象。

优点:只需要传入正确的参数,就可以获取所需要的对象实例,无须知道其创建细节。

劣势:工厂类的职责过重,增加新产品,需要修改工厂类创建对象的逻辑(添加新对象的创建逻辑,后面结合代码理解起来就会容易很多),违背了开闭原则,增加了系统的复杂度;

需要创建的对象过多后,不利于系统的维护。(试想一下,满屏的if-else或者switch-case语句)。

总的来说,如果需要创建的对象较少时,简单工厂是一种较为实用的设计模式,笔者在开发过程中也多次使用到简单工厂。

2.代码实践

接下来我们通过图书出版的案例来演示简单工厂模式:

我们先来看看实现后的类图,后面会根据代码做具体的讲解:

image.png
Step1:我们先创建图书接口类,并提供一个出版的方法print();
image.png
Step2:再创建对应的实现类,ArtBook 、MathBook,代表出版书籍的类目**
image.png
image.png
Step3:创建图书出版类的工厂:
image.png
最后我们来测试下简单工厂的使用:
image.png
输出如下:
image.png
以上,我们通过简单工厂模式的方式创建了Book的具体实现类,屏蔽了父模块对子模块的直接依赖,而是通过类型参数type,让后端的工厂类来生成对象。这种方式比较适合对象少的情况,对象多的情况请勿使用。具体可以参考后面的工厂方法及抽象工厂文章。另外,简单工厂模式的风险也显而易见,如果我们需要添加另外图书生产类,就需要修改factory代码,增加了系统的不安全性。
还有一点需要说明的是,我们也通过参数传入实现类Class对象,反射去生成对象,避免了对BookFactory类代码的修改。

3.JDK简单工厂模式分析
我们来看看Calendar日期类getInstance方法的实现。
首先还是看下Calendar的UML类图:

image.png
接下来我们从Calendar类1672行看看简单工厂的运用:
image.png
发现Calendar类的实现,和我们的实现几乎一致。另外仍然需要强调的是,简单工厂仅适用于实现类较少的情况。
简单工厂的实现,在其他的场景下也有不少运用,例如JDBC注册驱动,logback获取具体logger对象等。

相关文章

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

  • 设计模式之工厂模式

    设计模式之工厂模式 1. 简单工厂模式 1.1 模式定义 简单工厂模式又称为静态工厂方法,它属于创建型模式。在简单...

  • 设计模式之简单工厂、工厂方法、抽象工厂

    设计模式之简单工厂、工厂方法、抽象工厂 什么是设计模式? 设计模式(Design pattern)代表了最佳的实践...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

  • 重学设计模式(五):《Head First设计模式》工厂模式

    前言 接上篇重学设计模式(四):《Head First设计模式》工厂模式之简单工厂 概念 工厂方法模式:定义了一个...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

网友评论

    本文标题:设计模式之简单工厂模式

    本文链接:https://www.haomeiwen.com/subject/basosttx.html