【谈一谈】我们所用的三种工厂模式优缺点

在这里插入图片描述

Hello!!~大家好啊,好久也没有进行文章的更新了,原因嘛,最近的工作任务量有点大,导致摸鱼充电的时间大量减少,~哈哈哈(你别说,这是借口嘛!)

不过,今天是星期六,难的能够在这里分享下最近在工作中,我用到的三种工厂模式(简工抽),有啥区别呢?,

特别对刚工作小白来说,怎么选择何时用呢?这里为此我特地写篇文章来解决此问题


万变不离其宗

本文总纲:

在这里插入图片描述

三种工厂模式

我们知道工厂模式无非就三种:(简称***简工抽***)~啥意思?有点迷糊吧?大白话,就是按顺序,越来越复杂!

  1. 简单工厂模式: 一股脑的统统创建出来
  2. 工厂模式:
  3. 抽象工厂模式

~这里知道三种,但是具体啥样的,我们继续往下看:

三种工厂模式异同点:

上面已经做过简单的概括(很精华),但是那样说差别相同,估计你也会懵逼的,

所以我们一起往下探索(就是要刨根问底儿!我们要的就是读完就懂!就牛逼了!哈哈哈)

三者的关系图:

(这个图我是借鉴大佬的哈哈哈)~(你会问:为啥不用自己的啊?,因为自己总结的图没有人家生动易理解)

在这里插入图片描述

1.简单工厂模式

  • 简单工厂模式属于创建型模式,了解过的都知道它又叫Static Factory Method--静态工厂方法模式

其实浓缩为一句话: 一个工厂创建所有的具体产品~(这句话,我解释下:)

啥意思呢?

  • 正如其名.简单就简单在此工厂模式:
  • 不管这个产品,后面用还是没用,我都给你在此工厂初始化的时候,
  • 统统一股脑的都创建出来~(就特么问你猛不猛!哈哈,统统就是全部)

说完这些,我们已经知道简单工厂模式七七八八了,我们继续往下看

简单工厂的优点:
  1. 简单(啥也不论,就特么简单!):调用者想创建一个对象,只需知道名称就可以调用
  2. 面向接口化:调用者只用关心产品的接口,对于产品实现等细节进行封装屏蔽
简单工厂缺点:
  1. 不符合开闭原则: 就是你 要增加一个产品,你就要修改原先的工厂类(就是动原先的源码逻辑了)
  2. 违反高内聚责任分配原则: 集中创建了所有的实例

注意: 高内聚低耦合责任分配原则: (这里补充下对此知识的说明)

高内聚低耦合是软件工程中的概念,主要用于面向对象的设计,是判断软件设计好坏的标准

高内聚

  • 是指一个软件模块内的各个元素彼此结合的紧密程度很高,

低耦合

  • 是指软件模块之间依赖程度很低。

高内聚低耦合的目的在于提高软件的可重用性移植性可维护性,增强系统的稳定性、可扩展性和灵活性。

类的角度来看,

  • 高内聚意味着一个类应该只做一件事,并且类的内部方法应该紧密联系,避免一个类中只有一个或很多个方法。
  • 低耦合则意味着类与类之间的关系应该简单明了,避免过强的关系,减少类与类之间的交互复杂度。

2.工厂模式

又叫Ploymorphic Factory--多态工厂模式,属于创建型模式

什么意思(简单复习下)?就是定义一个创建对象的接口,但让实现这个接口的类决定实例化哪个类(就是实例化子类实现)

浓缩一句话: 就是一个工厂方法只创建一个具体产品

此模式支持增加任意产品,新增产品不需要更改之前存在的工厂,只需要此产品对应的工厂(面向一对一,符合开放封闭原则)

优点:

继承简单工厂模式优点: 用户面向接口

符合开放-封闭原则(~这个是最重要的哦!面试回答的关键点)

缺点:

增加了系统的复杂性,不那么简单了:怎么说呢?就是新增一个产品时,需要增加一个对应新的工厂类

3.抽象工厂模式

这玩意没有别名了,哈哈哈(为啥子? 都特么抽象了,还能怎么起~哈哈哈)

复习下: 抽象工厂模式提供一个创建一系列相关或相互依赖对象接口,无需指定具体的类

浓缩一句话: 一个工厂只创建一类具体产品(如上面所说,增加产品族时,需要增加工厂;增加新产品时,就修改工厂)

补充下: 产品族(就是不同产品登记结构中,功能相关的产品组成的家族--举个例子: 如我们的人类族系: 赵氏宗族,叶氏宗族,就是两个宗族,有初步了解了吧?再举个产品例子: 比如产品: 小米系列和华为系列)

优点:

  • 隔离具体类的生成,客户只要用即可,不需要知道什么被创建
  • 增加新的具体工厂以及产品族是很方便

缺点:

  • 对于增加新产品等级结构更加复杂,需要修改抽象工厂和所有的具体工厂类

完结

好了,每天都进步一点点

在这里插入图片描述