是,在一个MVC架构的职责分离Web应用程序的另外一个问题“数据/对象模型” - 我认为这其中有一个细微的差别不过......“过程模型” VS在MVC
我现有的实施看起来像这样:
- 控制器:非常'薄';除拨打&模型视图,路由&演示逻辑仅
- 型号:非常'厚';所有业务逻辑
- 观看次数:非常“稀”;除了内容&标记,代码被限制在环路&数据格式化
另外,项目利用一个ORM作为一个抽象层数据库上述和“连接器”作为包装类的外部服务。
我的问题涉及模型之间责任的分离。大多数情况下,我们的模型模仿我们系统中的'事物' - '用户','产品','订单'等。
我发现这对于提供简单的数据检索请求非常有效 - 控制器实例化合适的型号&调用相关的“吸气剂”。
当启动更复杂的过程如“PlaceOrder”或“RegisterUser”时,会出现此问题。有时候这些过程可以在一个模型中实现,有时候这些过程需要模型之间的沟通或协调来实现。
现在,模型直接在这些情况下相互沟通,而不是由控制器管理的过程。保持模型内的流程看起来是正确的(控制器不需要知道“RegisterUser”的业务规则需要发送确认电子邮件)。
我与这个实施寻找什么是它让我担心有些两个问题:
- 模式似乎经常知道太多关于其他模型 - 模型似乎太在此实现紧密耦合。
- 模型中的方法有两种常见类型:'getters/setters'和我调用'Process Methods'的方法,管理进程的方法,适当调用模型或其他模型中的其他方法 - 这些由于缺乏更好的描述,方法看起来像'非模型'。
是否适合实施两种模型 - '数据/对象模型'(主要是'getters/setters'和可能简单的'流程方法',它们是内部的和'流程模型' ('数据/对象')模型的协作需要'处理方法'?
在这个实现中,我们有模型表示'用户','产品','订单'以及'注册','订购'等。
想法?