创建型模式总结与对比

创建型模式分五类:单例模式、工厂方法模式、抽象工厂模式、原型模式、建造者模式。

单例模式和原型模式是不容易混淆的,而工厂方法模式、抽象工厂模式、建造者模式是比较容易混淆的,很容易让人感觉它们做的是差不多的。

这里,用两句话描述单例模式和原型模式,然后再描述后面三者的区别。

单例模式:只能有一个实例化对象。

原型模式:对一个已有的对象进行拷贝

工厂方法模式 VS 建造者模式

两者的作用是不一样的,建造者模式是通过一步步地精确构造,创建出一个复杂的对象。

工厂方法模式侧重于整体对象的创建方式

建造者模式则侧重于部件构建的过程

举个例子:如果我们要去造车,使用工厂方法模式就会直接生产出一辆车;但是使用建造者模式就会生成出一些零部件,需要组装车轮、发动机、车门、座位等。

其实这两个还是比较好区分的,难区分的是抽象工厂模式和建造者模式。

抽象工厂模式 VS 建造者模式

两者都是去生产零部件,所以容易混淆,只是两者关心的方面不一样。

抽象工厂模式侧重于什么产品由哪个工厂生产,不关心构建的过程

建造者模式却侧重于构建的过程

也就是说,抽象工厂模式实现的是对产品家族的创建,一个产品家族是一个系列的产品(不同分类维度的组合)。采用抽象工厂模式不需要去关心构建过程,只需要关心什么产品由什么工厂生产。

举个例子:生产空调,如果使用抽象工厂模式,就只关心空调是由哪个工厂生产,比如美的或者格力等,并不关心空调是怎么造出来的。

建造者模式则是要求按照指定的蓝图一步步建造产品,它的主要目的是通过组装零配件而产生一个新产品。

上例中,建造者模式关心的就是空调是怎么组装的。

容易发现的是,我们在实际应用过程中,可以将抽象工厂模式与建造者模式结合使用,形成一个完整的系统。

工厂方法模式 VS 抽象工厂模式

在说这两者区别时,我们引入简单工厂模式进行说明,将简单工厂模式理解成一个超级工厂,可以生产出各种各样的产品,这些产品可以毫不相干。

工厂方法模式:可以说简单工厂模式是工厂方法模式的特例,将超级工厂拆分成多个工厂,就是工厂方法模式。

抽象工厂模式:引入了产品族的概念,就是在一定前提下,分类这些工厂,比如按品牌分,或者按照价格等级分类,这样的好处是:可以大大缩减系统中的工厂数量。前提是这些工厂至少需要在两个维度上具有共性。

抽象工厂模式相对使用的场景较少,使用较多的还是简单工厂模式和工厂方法模式。

博文最后,还是想说一下软件工程的目的是为了把问题变简单,而不是把问题变复杂。使用设计模式并不是越多越好,而是在合适的场景下使用合适的设计模式。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Stella呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值