工厂模式

作者: greensure | 来源:发表于2019-01-15 12:24 被阅读0次

目录

1、工厂模式概念

2、工厂模式的意图

3、什么情况下适合工厂模式

4、工厂模式的设计思想

5、工厂模式的应用场景

6、工厂模式的优缺点

7、工厂方法模式和抽象工厂模式对比



参考资料:

https://www.imooc.com/learn/261

https://blog.csdn.net/wfg18801733667/article/details/60954744

工厂模式实践代码

1、工厂模式概念

  • 简单工厂模式:由一个工厂对象根据收到的消息决定要创建哪一个类的对象实例。
  • 工厂方法模式: 定义一个创建对象的工厂接口,让子类决定实例化哪一个类,将实际创建工作推迟到子类当中。
  • 抽象工厂: 抽象工厂是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类

实例化对象,用工厂方法代替new操作。

工厂模式包括工厂方法模式、抽象工厂模式。

抽象工厂模式是工厂方法模式的扩展。

2、工厂模式的意图

定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化。

工厂方法把实例化的工作推迟到子类中去实现。

项目中的现状:

在软件系统中经常面临着“对象”的创建工作,由于需求的变化,这个对象可能随之也会发生变化,但它却拥有比较稳定的接口。

为此,我们需要提供一种封装机制来隔离出这个易变对象的变化,从而保持系统中其他依赖该对象的对象不随着需求变化而变化。

如果我改变了某个对象,希望依赖于他的对象不随之发生变化;

3、什么情况下适合工厂模式

(1)有一组类似的对象需要创建;

(2)在编码时不能预见需要创建哪种类的实例;

(3)系统需要考虑扩展性,不应依赖于产品类实例如何被创建、组合和表达的细节;

工厂类负责创建的对象比较少,客户只需要传入工厂类参数,对于如何创建对象(逻辑)不关心。

简单工厂模式很容易违反高内聚低耦合的原则,因此一般只在很简单的情况下使用。

4、工厂模式的设计思想

基于项目现状将代码进行如下设计:

1)、尽量松耦合,一个对象的依赖对象的变化与本身无关

2)、具体产品与客户剥离,责任分割

5、工厂模式的应用场景

工厂模式的使用场景:

工厂类负责创建的对象比较少,客户只需要传入工厂类参数,对于如何创建对象(逻辑)不关心。

简单工厂模式很容易违反高内聚低耦合的原则,因此一般只在很简单的情况下使用。

工厂模式适用于哪些场景:

1、一个系统应当不依赖产品类实例被创立,组成,和表示的细节。这对应所有形态的工厂模式都是重要的;

2、这个系统的产品至少有一个的产品族;

3、同属于同一个产品族的产品是设计成在一起使用的。这一约束必须得在系统的设计中体现出来;

4、不同的产品以一系列的接口的面貌出现,从而使系统不依赖于接口实现的细节;

工厂方法模式的使用场景:

1)、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。

2)、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。

3)、设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。

抽象工厂的使用场景:

系统的产品多于一个产品族,而系统只消费某一族的产品。

6、工厂模式的优缺点

优点:

工厂模式的实现帮助我们:

1、系统可以在不修改具体工厂角色的情况下引进新的产品;

2、客户端不必关心对象如何创建,明确了职责;

3、更好的理解面向对象的原则,面向接口编程,而不要面向实现编程;

(1)工厂模式的优点

最大的优点在于工厂类中包含了必要的逻辑,根据客户需要的逻辑动态实例化相关的类。

(2)工厂方法模式的优点

创建对象的接口,让子类决定具体实例化的对象,把简单的内部逻辑判断移到了客户端。

工厂方法模式克服了简单工厂所违背的开闭原则的缺点,又保持了封装对象创建过程的优点。

扩展性高,想要增加一个产品,只要扩展一个工厂类就可以。

(3)抽象工厂的优点

当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。

缺点

** (1)简单工厂模式的缺点**

每增加一个产品,相应的也要增加一个子工厂,加大了额外的开发量。

7、工厂方法模式和抽象工厂模式对比

1、工厂模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂模式的推广;

2、工厂模式用来创建一个产品的等级结构,而抽象工厂模式是用来创建多个产品的登记结构;

3、工厂模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类;

总结

无论是简单工厂模式,工厂方法模式,还是抽象工厂模式,他们都属于工厂模式,在形式和特点上也是极为相似的,他们的最终目的都是为了解耦。在使用时,我们不必去在意这个模式到底工厂方法模式还是抽象工厂模式,因为他们之间的演变常常是令人琢磨不透的。经常你会发现,明明使用的工厂方法模式,当新需求来临,稍加修改,加入了一个新方法后,由于类中的产品构成了不同等级结构中的产品族,它就变成抽象工厂模式了;而对于抽象工厂模式,当减少一个方法使的提供的产品不再构成产品族之后,它就演变成了工厂方法模式。


所以,在使用工厂模式时,只需要关心降低耦合度的目的是否达到了。

相关文章

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

  • 【设计模式】- 工厂模式

    工厂模式分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。 工厂模式:靠工厂生产对象 简单工厂模式中只有一个工厂...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

  • Java设计模式——工厂模式

    工厂模式简单工厂模式工厂方法模式抽象工厂模式 1.简单工厂模式 1.基本介绍1)简单工厂模式也叫静态工厂模式,是属...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

网友评论

    本文标题:工厂模式

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