• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

理解区分简单工厂模式工厂方法模式抽象工厂模式

php 搞代码 3年前 (2022-03-01) 12次浏览 已收录 0个评论
文章目录[隐藏]

前言

很多人搞不懂简单工厂模式,工厂方法模式和抽象工厂模式三者的区别,看理论又很绕,怎么办?

这里我们不提太多理论,单从代码结构看,提供一种框架式的思路,具体如下:

简单工厂模式

类结构

一个工厂类
一个产品抽象类(或接口)
N个具体产品实现类

使用

1、根据需求,逐一实现产品抽象类
2、在工厂类中,根据需求生成具体哪个产品对象

工厂方法模式

类结构

一个工厂抽象类(或接口)
N个工厂实现类
一个产品抽象类(或接口)
N个产品实现类

使用

1、根据需求,逐一实现产品抽象类
2、根据需求,逐一实现工厂抽象类,在每个工厂实现类中,生成对应的产品(与简单工厂模式对比发现,这里将生产职责划分到具体的工厂类中了,也就是说,假如我现在要新增一个产品,只需要新增一个产品实现类和对应的工厂实现类就可以了)

抽象工厂模式

类结构

一个工厂抽象类(或接口)
N个工厂实现类
N个产品抽象类(或接口)
N个产品实现类

使用

1、根据需求,按产品族,逐一实现产品抽象类
2、根据需求,逐一实现工厂抽象类,在每个工厂实现类中,按产品族进行生产操作(因为针对的不再是单一产品,所以工厂实现类中,生产方法一般都会是多个)

总结

好了,现在我们再看看,归纳下,是不是很简单?

三种模式,复杂度和抽象都上都是逐渐增加的。

简单的,只抽象产品

一般的,产品和工厂都抽象了,职责分开了,符合了开闭原则

抽象的,不再按产品类,而是按产品族来抽象了,所以会有N个产品抽象类

但是无论那种,产品肯定都是要抽象的,只是第三种抽象的多一点而已(针对产品族)

:上面所列出的,只是普通情况下,可能出现的结构,并没有列出变体情况


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:理解区分简单工厂模式工厂方法模式抽象工厂模式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址