演示域分离

2003年10月9日

我发现并遵循的最有用的设计原则之一是,在程序的演示方面(用户界面)和其余功能之间保持良好的分离。多年来,我看到过这种做法,也看到了很多好处。

  • 演示逻辑和领域逻辑在分离时更容易理解。
  • 您可以支持同一基础程序上的多个演示,而无需重复代码。
  • 用户界面很难测试,分离将更多逻辑保留在更易于测试的地方。
  • 您可以轻松地为脚本添加编程 API 或将其公开为服务(实际上,我认为这些是替代演示)。
  • 演示代码需要与领域代码不同的技能和知识。

尽管有这些优势,但我经常看到违反了这一原则。我认为这部分是由于缺乏知识,部分是由于许多框架使将领域逻辑混合到演示中变得过于容易,并且难以保持分离。

不要误以为这是客户端/服务器物理分离。即使所有代码都在同一台机器上运行,也值得进行这种逻辑分离。

该原则是在模型视图控制器 (MVC) 中最突出的部分,实际上,对于许多人来说,MVC 是他们描述这种分离的方式。

请记住,诸如 Web 服务之类的东西也是演示,即使它们是由计算机用户而不是人类用户使用的。因此,不要将领域代码与支持 Web 服务或任何其他外部 API 所需的代码混合在一起。

(我也在 IEEE 软件专栏 中写过这方面的内容。)