首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C+简单工厂模式-BBA 造车了

简单工厂模式(Simple Factory Pattern)又叫做静态工厂方法模式(Static Factory Method Pattern),属于创建型模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。

值得注意的是,简单工厂模式并不属于 23 种 GoF 设计模式之一。它是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

1

模式结构

UML 结构图:

工厂(Factory):整个模式的核心,负责实现创建所有实例的内部逻辑。

抽象产品(Product):所有具体产品的父类,负责描述所有实例所共有的公共接口。

具体产品(ConcreteProduct):最终创建的具体产品

2

优缺点

优点:

工厂类包含了必要的逻辑判断,根据指定的信息来创建对应的产品。客户端仅负责“消费”产品即可,实现了对象创建和使用的分离。

客户端无需关心具体产品如何创建与组织,仅需知道具体产品所对应的参数即可,可以在一定程度减少使用者的记忆量。

缺点:

由于工厂类集中了所有产品的创建逻辑(违反了高内聚责任分配原则),职责过重,一旦无法正常工作,整个系统都将受到影响。

一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

这些缺点在"工厂方法模式"中得到了一定的克服。

3

适用场景

工厂类负责创建的对象比较少(不会造成工厂方法中的业务逻辑太过复杂)。

客户端仅需知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。

注意:由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

4

案例分析

BBA - 奔驰、宝马、奥迪

互联网行业有三巨头 BAT,汽车界也有三大豪门 BBA。它们是驰名世界的汽车企业,也被认为是高档汽车生产的先导,最可怕的是均属于德国制造。奔驰优雅稳重、宝马操控感强、奥迪大气,更是官车的代表。。。“坐奔驰,开宝马”,足以说明一切。

在国内,BBA 大受欢迎,对很多人来说,不仅是代步工具,更是身份的象征。但车再好,也需要在工厂中加工生产,来一起看看简单工厂模式吧!

5

代码实现

创建抽象产品

汽车产品,由 ICar 表示:

创建具体产品

模型有了,就可以定义具体的汽车了,它们有不同的品牌:

创建工厂

要生产汽车,需要有相应的工厂:

这样以来,工厂就可以根据汽车类型来生产对应的汽车了。

创建客户端

当一切准备就绪,就可以实现客户端了:

输出如下:

Benz Car

Bmw Car

Audi Car

·················END·················

你们的在看就是对我最大的肯定,

点个在看好吗~

编程学习基地

常回基地看看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210318A01TBD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券