Answers:
我不认为有一个独特的解决方案,因为很多关注点都来自于特定的问题。
您可以使用“模型视图控制器”模式:这将您的问题转移(限制)到“如何在控制器上实现行为”,这是始终遵循规则的行为。
除非我们谈论的是非常简单的规则,否则您组织它们的方式会带来表达问题。您总是面临简单(结构化)和表达(编写有趣的规则)的冲突需求。
使用MVC可以简化您的工作,因为模型将状态(即在其中强制执行规则的上下文)形式化了。
话虽如此,您可能会发现使用策略模式和/或状态模式来实现Controller很有用,以便根据更简单的可切换行为组成复杂的行为。一个链方面的责任心模式可以帮助你表达规则,而国家机器应该小心使用,因为它的“状态”部分重叠“状态”的模型的含义。
在Controller中使用Command模式可能有助于减少Controller的可使用性(Command知道如何处理模型),并易于在Controller中添加撤消/重做功能。
无论如何,您应该尝试使用设计模式作为指导:它们对于避免重新发明轮子(尤其是方形轮子)很有用,但是并非每个问题的解决方案都由一堆(圆形)轮子组成。
我不确定是最好还是更好,但是我通常使用观察者模式。对我来说效果很好。
除非您之前已经做过很多次,否则您总是会得到意粉代码。实际上,到目前为止,您才刚刚开始:您所拥有的只是初步规格的草稿。在此处查看其他一些建议,并进行认真的重写。然后再进行一些重写,然后...。就我个人而言,我永远不确定我是否将自己的代码变成了真正好的形状,或者只是厌倦了对其进行重写,但是我似乎最终还是正确地做到了。
从两端解决问题。尝试使整体设计有意义,并挑选能够处理简单杂务的小零件并使它们正确无误。然后尝试从两端到中间。然后从中间向两端工作。然后从上向下,然后从下向上。然后重复整个过程。
本质上,您拥有的是类的集合。考虑一下A类。如果A类构建良好,则使用它的类会自动工作得更好,无论它们是好是坏。如果A类很好地使用了类,那么这些用过的类将做得更多,无论它们是好是坏。因此,请尽最大可能组织课程,然后确保每个课程都是最好的课程。
重要的是要使其尽可能正确。错误代码会困扰您直到您将其丢弃为止。使用软件,总能获得额外的抛光效果。(除非没有人最终使用该代码...。)
总结一下:查看其他答案中给出的实际建议,然后重新编写代码,直到获得所需的内容为止。