2010-01-16 62 views
3

此问题与项目设计有关。该项目采用电气系统并以编程方式定义其功能。现在我在定义系统方面已经深入人心,我正在合并大量的交互,导致系统适当地进行自我配置。例如:当某些事件发生时,系统打开和关闭电气接触器。由于这个系统在飞机上,它依赖于空中/地面逻辑,因此根据它在哪里合并了两种不同的行为。用于定义机器系统功能的设计策略建议

我给这个解释与论证的复杂程度,这个应用程序包含了所有。正如我继续我的设计,我已经使用if/else结构作为在这个电气系统中推断正确配置的一种手段。然而,我深入到编码中,需要更多的if/else结构。我觉得我已经达到了无效编程这个系统的程度。

对于那些处理过这样的项目的人,我会问:我是否踏上了一条众所周知的道路(当涉及到定义可能发生的每种可能情况时),我应该继续坚持下去......或者我可以雇用一些其他策略来完成定义真实世界系统行为的任务。

在这一点上,我几乎没有使用代表的经验,但我不知道是否可以利用一些观察者或其他“可可”优点来检查场景以代替无尽的if/else块。

回答

1

既然你尝试将真实世界的系统模型,我建议建立一个具体的面向对象设计,以及定义为A和A具有-a关系,并应用良好的老式的面向对象设计,并将其应用到破把现实世界的系统转化为功能分解。

我建议你看看定义一个处理一般情况下的协议,并利用他们在特定的情况下。

例如,您可以有许多类型的事件遵守ElectricalEvent协议,并根据类型您可以更好地决定ElectricalContactor如何使用isKindOfClass选择器区分GeneralElectricEvent和SpecializedElectricEvent。

0

如果你能提前定义所有的状态,你是最好的实现这是一个finite state machine的。这使您可以在一个中心位置清楚地定义与状态相关的逻辑。

有一些实现,你可以看看:

  • SCM允许你生成状态机代码的Objective-C
  • OFC实现他们作为DFSM

当然,你可以如果更适合你,也可以推出自己的定制实现。