MVC架构.什么是模特?

2 architecture model-view-controller

我是MVC的新手,但我已经看到了它的好处和优势.但是,我有一个(可能很容易回答)设计问题:

我一直在思考模型并讨论构造它们的正确方法.我看到它的方式有几个选择:

1)模型和表结构具有1对1的关系......这意味着每个表都有相应的模型.模型类具有与表列对应的属性,并且具有所需的任何方法(如getter和setter),以任何必要的方式操作表中的数据.这似乎是通用选项,我想我会让控制器根据需要调用模型来执行任何必要的业务功能.

2)模型与业务逻辑的操作而不是数据紧密相关:例如,如果在前端删除某个对象影响多个表,则模型然后"模拟"此行为并与多个表交互并执行必要的功能.然后,控制器只需要针对所需的任何业务行为调用单个模型.这是不太通用的,因为模型更加紧密耦合..但似乎更快实现.

3)前两个选项之间的东西.或许我完全忽略了这一点.

希望这是有道理的!如果我不完全忽略这一点,我倾向于认为选项(1)更好.任何的想法?

编辑:不是它应该重要,但我打算使用Codeigniter PHP MVC框架.

wom*_*omp 5

两者都是有效的实现,并且根据您的需要,可以很好地工作.

你的#1基本上描述了Active Record模式,它由SubSonic,Castle和许多其他ORM实现使用.

您的#2实际上是在描述实体框架/ Hibernate/LightSpeed方法,在这种方法中,您处理的是与您的域更概念相关的对象,而不是表.它们实际上包含其他域对象引用,而不是包含外键ID属性的对象,然后在访问时实例化它们.

两种方式都很棒.对于初学者来说,Active Record方法通常更直观,并且潜在的陷阱可能更少.EF风格可以节省大量的基本级编码,并直接在代码中处理FK.

编辑:要清楚,您在两种情况下描述的是数据访问层相关,而不是严格模型相关.然而实际上你非常接近,因为大多数模型往往只是代表这些类型的对象中的一种或多种.