oo问题 - 混合控制器逻辑和业务逻辑

alc*_*cal 6 .net c# oop design-patterns

我不确定我是否使用"标准"术语,但这是我试图解决的基本OO问题.

我正在编写一个Windows窗体.我不想在表单事件处理程序中使用逻辑,所以我只是从那里调用自定义对象.

在自定义对象中,有两组逻辑.

  1. "控制器"逻辑,决定需要完成什么以及何时完成.
  2. 执行需要完成的操作的实际业务逻辑(例如,执行数学运算并返回结果的控件等).

我的问题是,OO架构是否允许将这两者都放在一个对象中?或者是否建议将它们拆分为"控制器"对象和"业务逻辑"对象?我应该参考这个设计模式吗?

目前,我已经开始将它们组合成一个对象.该对象具有"start"方法,该方法包含控制器逻辑.然后,此方法根据需要调用对象的其他方法,并最终将结果返回给对象的调用者.

Bil*_*win 7

你正在做的是一种"胖控制器"架构.目前,软件开发趋向于瘦控制器.

OO设计就是解耦. 如果你只关注OO编程的一件事,就这样吧.

查看" 快速启动域驱动设计 ".这本免费的电子书简要介绍了埃里克埃文斯的重要着作"领域驱动设计"中涵盖的概念.

接受这些概念的教育应该有助于您了解如何将业务逻辑与控制器或服务层分开.


Pau*_*ier 3

一般来说,您可能应该将它们放在两个不同的对象中,但是有一个限定符。如果您的项目足够小并且对象模型不够复杂,那么将功能组合成一个对象可能是有意义的;但是,如果您的功能足够复杂,那么几乎肯定将控制器和业务对象分开会更好。至少,如果您现在不完全分离控制器和业务对象,那么在设计系统时着眼于稍后将它们分离。