首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在这个场景中应该应用哪种创造模式?

在这个场景中应该应用哪种创造模式?
EN

Software Engineering用户
提问于 2017-11-18 08:55:12
回答 1查看 300关注 0票数 0

在这种情况下,我必须应用一些创造性的模式。

建立一个由10辆汽车组成的车队,其特点如下。五辆车应该具备所有的功能,五辆车应该没有激光雷达和超声波传感器:

  1. 雷达传感器散落在汽车周围,监视附近车辆的位置。
  2. 摄像机检测交通灯,读取路标,跟踪其他车辆,同时注意行人和其他障碍物。
  3. 激光雷达传感器通过反射汽车周围的光脉冲,帮助检测道路边缘和识别车道标记。
  4. 车轮上的超声波传感器可以检测停车时的限位和其他车辆的位置。
  5. 最后,中央计算机分析来自各种传感器的所有数据,以操纵转向、加速和制动。

我最初的猜测是,它应该遵循抽象的工厂方法。以下是最初的设计,但我不确定这是否正确。

代码语言:javascript
运行
复制
Car factory interface
carCreatefactory implements Car factory
Products:
Sensors
Radar sensor implements Sensors
Lidar Sensor implements Sensors
Ultrasonic sensor implements Sensor

Camera
Video Camera implements Camera

Computer
Central Computer implements Computer

Client:
Fleet

我对中央计算机感到困惑,因为它似乎不太适合。其次,在这种设计中,一辆汽车只能有一个传感器,而不是所有传感器。通过改变一些逻辑,这种模式合适吗?还是应该用不同的模式?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2017-11-18 15:52:18

候选创建模式

建立一个由10辆汽车组成的车队,其特点如下。五辆车应该具备所有的功能,五辆车应该没有激光雷达和超声波传感器。

辛格尔顿当然被排除在外。

原型并不是一个真正的候选,因为它需要你已经拥有1辆汽车的所有功能和一辆汽车没有雷达,以克隆他们。

如果汽车的创建界面总是相同的话,可以考虑工厂方法。但它真的有这些功能吗?如果我有一个新的汽车模型有一些更多的功能呢?

抽象工厂可能是候选人。汽车模型可以是不同的抽象产品家族。有雷达和没有雷达的汽车可以是不同的产品,也可以是构造函数中使用不同参数创建的同一产品。

建筑工人可能是候选人。一辆汽车将是一个复杂的圆形喷射机,其施工过程可以从具体的汽车代表中抽象出来。

和获胜者是..。?

让我们再读一遍,注意细节:

建立一个由10辆汽车组成的车队,其特点如下。五辆车应该具备所有的功能,五辆车应该没有激光雷达和超声波传感器。

如果仅此而已,我会像您一样选择抽象工厂,每个特性都是工厂调用中的一个布尔参数。

但是,您的文本为您提供了这些特性及其相关性的详细信息:

  1. 雷达传感器..。在车周围..。
  2. 摄像机..。
  3. 激光雷达传感器..。脉冲光..。
  4. 车轮上的超声波传感器..。
  5. ..。中央电脑..。来自各种传感器的数据..。操纵转向,加速和制动。

这意味着你必须确保你的车里的零件按照这些要求互相了解。特定汽车对象的计算机对象知道汽车的每一个传感器对象,以便它可以发送查询。

考虑到这一点,似乎赢家是建造者模式。这是唯一的模式设计,以应对复杂的建设过程和装配的零部件。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/360923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档