首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环依赖

循环依赖
EN

Software Engineering用户
提问于 2018-01-31 18:23:22
回答 1查看 316关注 0票数 3

我正在建立一个舰队单位的gps系统,目前,我需要弄清楚如何连接我的对象。

下面是一个场景:

  1. 每个舰队单位可能已经安装了一个或多个gps设备。
  2. 每个舰队单位可能有一个或多个引擎。
  3. 每个机队的发动机可能有一个或两个燃油流量计连接到一个或两个全球定位系统设备。根据发动机类型的不同,燃油流量计可以同时处理前向燃料和后向燃料,但有时需要有两个不同的燃料流量计,一个用于前向燃料,另一个用于后向燃料。更糟糕的是,一些gps设备模型有两个燃料流量计的输入,而另一些则没有,所以当需要两个燃料流量计时,需要安装两个不同的gps设备。

因此,如果我有以下对象:

FleetUnitGpsDeviceEngineFuelFlowMeter

我想找到一种不需要循环依赖的方式来连接它们。

如果FleetUnit对象有GpsDevice对象列表和Engine对象列表,而GpsDevice对象有FuelFlowMeter列表,FuelFlowMeter引用GpsDevice对象和Engine对象,我认为循环依赖项太多,设计不干净。

你能建议我如何处理这样的场景,在这样的场景中,很少有对象表现得像一个图形?

EN

回答 1

Software Engineering用户

发布于 2018-01-31 19:22:15

这里有几件可能有帮助的事情。考虑到你的问题,有一件事让事情变得复杂,那就是你有一些GPS和燃油表能够支持两个引擎,而其他的则不能。如果你的目标是盘点这些,那么这些细节可能很重要,但我猜它并不重要。我认为你真正关心的是:每台发动机的燃料使用量是多少,他们可能做了多少工作(距离、海拔等)。

我指出这一点,因为这是一个简单得多的建模问题。因此,要做到这一点,您需要以下(粗糙的)实体:

  • FleetUnit
  • Engine
  • Fuel Reading
  • Location Information

关于OO是如何解释的,我面临的一个大问题是,解释中的例子要么暗示,要么说明它们应该代表真实世界中的具体事物,比如猫、狗或树。事实并非如此,java程序中的大多数类都不代表真实世界的实体。

如果出于某种原因,您的应用程序必须知道Fuel Reading x与GPS单元Y相关联,则可以将其添加到模型中。这里的关键是您应该根据需要如何使用它们来设计类,而不是基于问题域中的具体实体。

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

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

复制
相关文章

相似问题

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