工厂模式和抽象工厂的区别总是绕晕初学者!!?欢迎来讨论

首先来看一下两个模式的UML图:

工厂模式:

抽象工厂模式:

这张图看过的小伙伴应该清楚知道来自哪...   

来自狂神,借用一下您的图,我也是看了你的视频然后产生误解再到理解

通过类图其实可以发现,从类图上体现出来的层次是一样的!

写过代码的小伙伴也会发现其实结构也非常的相似!那么区别在哪呢?

个人理解:

区别体现在维度!抽象工厂模式解决了二维度的问题,也就是多个种族,可以看出抽象工厂实际上是要比工厂更抽象一层(这里指思维,维度上的抽象)。

抽象工厂模式最顶层的工厂是一个抽象产品工厂,这个产品工厂可以产生不同的种族,比如:手机、路由器等。下一层就是对应的品牌工厂,该工厂可以生产自己品牌下的多种产品!

而工厂模式最顶层是一个对应种族的抽象工厂,比如:手机工厂、路由工厂,然后下一层就是对应品牌的工厂生产不同产品!

以工厂模式的UML图为参照。手机工厂有它的生产线:

如果我还需要一个路由器工厂,那么可以构建一个路由器工厂,如果需要更多其他产品,则依次创建!会发现手机工厂中有生产苹果手机,路由器工厂中有发现生产苹果路由器。如果需求要将这些不同品牌下的不同产品进行归类!针对这种情况,你是选择创建一个抽象工厂模式还是多个工厂模式呢?毫无疑问,选择抽象工厂模式!一个华为产品工厂就可以生产华为的手机、路由器等...

现在可以清晰感受到,工厂模式针对的是一个维度的问题,而抽象工厂模式则是针对两个维度的问题!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张同学_java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值