设计策略建议,用于定义机器系统功能

时间:2010-01-16 03:37:34

标签: iphone objective-c cocoa cocoa-touch project-planning

这个问题与项目设计有关。该项目采用电气系统并以编程方式定义其功能。现在,我在定义系统方面已经非常苛刻,我正在整合大量的交互,这使得系统能够适当地配置自己。示例:系统在发生特定事件时打开和关闭电气接触器。由于该系统在飞机上,因此它依赖于空中/地面逻辑,因此根据其位置包含两种不同的行为。

我提供了所有这些解释来演示此应用程序包含的复杂程度。正如我在设计中所做的那样,我已经使用if / else结构作为推断该电气系统中正确配置的手段。但是,我进入编码越深入,需要的if / else结构就越多。我觉得我已经达到了我无法有效编程这个系统的程度。

对于那些之前处理过类似项目的人,我问:我是否正在走一条众所周知的道路(当谈到定义可能发生的每种可能情况时)我应该继续坚持......或者我可以雇用一些其他策略来完成定义现实世界系统行为的任务。

此时,我几乎没有使用过代表的经验,但我想知道我是否可以利用一些观察者或其他“可可”的优点来检查场景,而不是无休止的if / else块。

2 个答案:

答案 0 :(得分:1)

由于您正在尝试对现实世界系统进行建模,因此我建议创建一个具体的面向对象设计,该设计可以很好地定义is-a和a-a-relationship,并应用良好的老式面向对象设计并将其应用于打破现实世界系统转化为功能分解。

我建议您研究定义处理通用案例的协议,并在特定情况下使用它们。

例如,您可以使用许多类型的事件遵循ElectricalEvent协议,并且根据类型,您可以更好地决定ElectricalContactor如何使用isKindOfClass选择器在GeneralElectricEvent与SpecializedElectricEvent之间进行区分。

答案 1 :(得分:0)

如果您可以提前定义所有状态,则最好将其实现为finite state machine。这允许您在一个中心位置清楚地定义依赖于状态的逻辑。

您可以查看一些实现:

  • SCM允许您为Objective-C生成状态机代码
  • OFC将它们实现为DFSM

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