美文网首页
工厂模式

工厂模式

作者: 雨林QiQi | 来源:发表于2021-03-07 22:34 被阅读0次

工厂模式是创建型模式,它的作用是创建对象。具体来说,常见的工厂模式包括简单工厂模式,工厂方法模式和抽象工厂模式三种。

简单工厂模式(Simple Factory Pattern)

image
角色定义:
工厂类

工厂类通常包含一个静态方法(类方法),由该方法根据输入类型负责创建具体的产品(对象)。

抽象产品基类(接口)

它的作用是降低客户端和具体产品之间的耦合度。而且符合了开闭原则,以后需要加入新车型,客户端调用的代码也基本无需修改。

具体产品类

真正实现业务逻辑的子类。

解决的问题:

工厂模式的核心思想在于:

  • 通过引入工厂类,使对象的创建和使用分离了。这样的好处是它们可以独立的变化,易维护和扩展。
  • 客户端依赖抽象基类(接口),而不是具体的类,降低了耦合度。
适用的场景:
  • 有一组相似的对象,需要集中统一创建时。
  • 创建对象的过程较为复杂时。
  • 对象很多,并且有扩展需求时。
  • 客户端不需要知道创建对象的过程时。
  • 客户端使用的对象存在变动的可能,或者根本不知道使用哪一个具体对象时。

工厂方法模式(Factory Method Pattern)

简单工厂方法有两个缺点:
1.工厂类只有一个,且静态的工厂方法无法由子类继承,所以工厂的扩展受到限制。
2.工厂方法里除了创建对象的代码,还有大量的判断逻辑(if-else)混在里面,方法会变得越来越臃肿。

角色定义:
抽象工厂类、具体工厂子类

工厂方法模式在简单工厂模式的基础上演变为抽象出一个工厂父类,然后用不同的工厂子类来生成各自的产品。


image

该模式下产品和工厂的可扩展性都增强了,但是也随之而来的是可能会出现工厂类过多的问题。一般可以和简单工厂模式结合使用。

抽象工厂模式(Abstract Factory Pattern)

工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类。抽象工厂模式里每个工厂都会生产多种产品,但不同工厂生产的产品属于不同的系列。抽象工厂模式可以用来解决多产品族的问题。

角色定义:
产品族:

产品族可以理解为产品系列。举个例子,现代简约风格的家具,包括桌子沙发茶几是一个产品系列;中式古典风格的桌子沙发茶几是另一个产品系列。抽象工厂模式就是用不同的工厂来生产不同系列下的一组产品。
再举个该模式常被应用的例子:App修改主题(换肤)。App界面是由各种UI控件组成的,每个主题下同样的控件会有不同的样式。不同主题的工厂会生产各自样式的控件。变换主题时只要加载需要的主题工厂就可以了。


image
解决的问题:
  • 将一个系列的产品族统一到一起创建。
  • 容易改变产品的系列。
适用的场景:

需要创建一组对象,并需要切换不同的系列时。

缺点:
  • 增加新的产品种类困难,它需要修改抽象工厂的接口。
  • 代码结构比较复杂。

相关文章

  • 常用设计模式

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

  • 工厂模式

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

  • 工厂模式

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

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

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

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

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

  • 工厂模式

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

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

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

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

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

  • 设计模式-工厂模式

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

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

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

网友评论

      本文标题:工厂模式

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