初识设计模式之简单工厂模式、工厂方法模式、抽象工厂模式

2020-08-05  本文已影响0人  邕州惆怅客

​ 工厂顾名思义就是生产产品的意思,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。

1. 简单工厂模式

​ 首先,我们有一个服装制造厂,有一张服装设计原稿。现在,我们需要根据各个经销商的要求制造出不同颜色的衣服。

2. 工厂方法模式

​ 那么问题来了,在我们使用简单工厂模式时,当我们的服装厂生意做大了,吸引了无数经销商前来订单,这时我们厂里只能生产红、绿、蓝颜色的衣服。如果我们想要接下这批订单,那我们就要对原工厂进行改造,那就会消耗大量的人力物力了。这时,工厂方法模式就登场了!

​ 如此这般,在我们接受到新订单时我们只需要新建一个小工厂就可以了。不需要对建好的工厂进行改造。它能更好的符合开闭原则的要求。

工厂方法模式的优点:

  • 用户只需要关心产品对应的工厂,甚至无需关心创建细节或具体产品类的类名。
  • 基于工厂角色和产品的多态性设计是工厂模式的关键。它能自主决定如何创建哪种产品对象,而创建细节都封装在具体工厂内部。
  • 在系统要添加新的产品时,无需修改抽象工厂和抽象产品提供的接口,无需修改客户端,也无需修改其他的具体工厂和具体产品,只要添加一个具体工厂和具体产品即可,从而提高系统的可扩展性(符合开闭原则)

工厂方法模式的缺点:

  • 在添加新产品时,要编写新的具体产品类,并要提供与之对应的具体工厂类。系统软件个数也成对增加,从而增加了系统的复杂度,带来更多开销。
  • 由于系统的可扩展性,在客户端中要引入抽象层进行定义,从而增加了系统的抽象性和理解难度。

3. 抽象工厂模式

​ 工厂模式中的每一个形态都是针对一定问题的解决方案,工厂方法针对的是多个产品系列结构;而抽象工厂模式针对的是多个产品族结构,一个产品族内有多个产品系列。

让我们回到我们的服装厂继续分析,现在,我们已经不满足于衣服业务啦,我们要进军裤子生产届,那么问题来了,我们只有衣服生产厂,怎么办呢?我们现在迫切需要一种多个产品族结构的解决方案。

以上就是我对这三个模式的简单认识啦,也是作为个人的学习总结,仅供参考!

如有错误,万望指正。

上一篇 下一篇

猜你喜欢

热点阅读