【谈一谈】我们所用的三种工厂模式优缺点
Hello!!大家好啊,好久也没有进行文章的更新了,原因嘛,最近的工作任务量有点大,导致摸鱼充电的时间大量减少,哈哈哈(你别说,这是借口嘛!)
不过,今天是星期六,难的能够在这里分享下最近在工作中,我用到的三种工厂模式(简工抽),有啥区别呢?,
特别对刚工作小白来说,怎么选择何时用呢?这里为此我特地写篇文章来解决此问题
万变不离其宗
本文总纲:
三种工厂模式
我们知道工厂模式无非就三种:(简称简工抽)~啥意思?有点迷糊吧?大白话,就是按顺序,越来越复杂!
- 简单工厂模式: 一股脑的统统创建出来
- 工厂模式:
- 抽象工厂模式
~这里知道三种,但是具体啥样的,我们继续往下看:
三种工厂模式异同点:
上面已经做过简单的概括(很精华),但是那样说差别相同,估计你也会懵逼的,
所以我们一起往下探索(就是要刨根问底儿!我们要的就是读完就懂!就
牛逼
了!哈哈哈)
三者的关系图:
(这个图我是借鉴大佬的哈哈哈)~(你会问:为啥不用自己的啊?,因为自己总结的图没有人家生动易理解)
1.简单工厂模式
- 简单工厂模式属于创建型模式,了解过的都知道它又叫
Static Factory Method
–静态工厂方法模式
其实浓缩为一句话: 一个工厂创建所有的具体产品~(这句话,我解释下:)
啥意思呢?
- 正如其名.简单就简单在此工厂模式:
- 不管这个产品,后面用还是没用,我都给你在此工厂初始化的时候,
- 统统一股脑的都创建出来~(就特么问你猛不猛!哈哈,统统就是全部)
说完这些,我们已经知道简单工厂模式七七八八了,我们继续往下看
简单工厂的优点:
- 简单(啥也不论,就特么简单!):调用者想创建一个对象,只需知道名称就可以调用
- 面向接口化:调用者只用关心产品的接口,对于产品实现等细节进行封装屏蔽
简单工厂缺点:
- 不符合开闭原则: 就是你 要增加一个产品,你就要修改原先的工厂类(就是动原先的源码逻辑了)
- 违反高内聚责任分配原则: 集中创建了所有的实例
注意: 高内聚低耦合责任分配原则: (这里补充下对此知识的说明)
高内聚低耦合是软件工程中的概念,主要用于面向对象的设计,是判断软件设计好坏的标准。
高内聚
- 是指一个软件模块内的各个元素彼此结合的紧密程度很高,
低耦合
- 是指软件模块之间的依赖程度很低。
高内聚低耦合的目的在于提高软件的可重用性、移植性和可维护性,增强系统的稳定性、可扩展性和灵活性。
从类的角度来看,
- 高内聚意味着一个类应该只做一件事,并且类的内部方法应该紧密联系,避免一个类中只有一个或很多个方法。
- 低耦合则意味着类与类之间的关系应该简单明了,避免过强的关系,减少类与类之间的交互复杂度。
2.工厂模式
又叫
Ploymorphic Factory
–多态工厂模式,属于创建型模式什么意思(简单复习下)?就是定义一个创建对象的接口,但让实现这个接口的类决定实例化哪个类(就是实例化由子类实现)
浓缩一句话: 就是一个工厂方法只创建一个具体产品
此模式支持增加任意产品,新增产品不需要更改之前存在的工厂,只需要此产品对应的工厂(面向一对一,符合开放封闭原则)
优点:
继承简单工厂模式优点: 用户面向接口
符合开放-封闭原则(~这个是最重要的哦!面试回答的关键点)
缺点:
增加了系统的复杂性,不那么简单了:怎么说呢?就是新增一个产品时,需要增加一个对应新的工厂类
3.抽象工厂模式
这玩意没有别名了,哈哈哈(为啥子? 都特么抽象了,还能怎么起~哈哈哈)
复习下: 抽象工厂模式提供一个创建一系列相关或相互依赖对象接口,无需指定具体的类
浓缩一句话: 一个工厂只创建一类具体产品(如上面所说,增加产品族时,需要增加工厂;增加新产品时,就修改工厂)
补充下: 产品族(就是不同产品登记结构中,功能相关的产品组成的家族–举个例子: 如我们的人类族系: 赵氏宗族,叶氏宗族,就是两个宗族,有初步了解了吧?再举个产品例子: 比如产品: 小米系列和华为系列)
优点:
- 隔离具体类的生成,客户只要用即可,不需要知道什么被创建
- 增加新的具体工厂以及产品族是很方便
缺点:
- 对于增加新产品等级结构更加复杂,需要修改抽象工厂和所有的具体工厂类
完结
好了,每天都进步一点点