在这种情况下,我必须应用一些创造性的模式。
建立一个由10辆汽车组成的车队,其特点如下。五辆车应该具备所有的功能,五辆车应该没有激光雷达和超声波传感器:
我最初的猜测是,它应该遵循抽象的工厂方法。以下是最初的设计,但我不确定这是否正确。
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
我对中央计算机感到困惑,因为它似乎不太适合。其次,在这种设计中,一辆汽车只能有一个传感器,而不是所有传感器。通过改变一些逻辑,这种模式合适吗?还是应该用不同的模式?
发布于 2017-11-18 15:52:18
建立一个由10辆汽车组成的车队,其特点如下。五辆车应该具备所有的功能,五辆车应该没有激光雷达和超声波传感器。
辛格尔顿当然被排除在外。
原型并不是一个真正的候选,因为它需要你已经拥有1辆汽车的所有功能和一辆汽车没有雷达,以克隆他们。
如果汽车的创建界面总是相同的话,可以考虑工厂方法。但它真的有这些功能吗?如果我有一个新的汽车模型有一些更多的功能呢?
抽象工厂可能是候选人。汽车模型可以是不同的抽象产品家族。有雷达和没有雷达的汽车可以是不同的产品,也可以是构造函数中使用不同参数创建的同一产品。
建筑工人可能是候选人。一辆汽车将是一个复杂的圆形喷射机,其施工过程可以从具体的汽车代表中抽象出来。
让我们再读一遍,注意细节:
建立一个由10辆汽车组成的车队,其特点如下。五辆车应该具备所有的功能,五辆车应该没有激光雷达和超声波传感器。
如果仅此而已,我会像您一样选择抽象工厂,每个特性都是工厂调用中的一个布尔参数。
但是,您的文本为您提供了这些特性及其相关性的详细信息:
这意味着你必须确保你的车里的零件按照这些要求互相了解。特定汽车对象的计算机对象知道汽车的每一个传感器对象,以便它可以发送查询。
考虑到这一点,似乎赢家是建造者模式。这是唯一的模式设计,以应对复杂的建设过程和装配的零部件。
https://softwareengineering.stackexchange.com/questions/360923
复制相似问题