dev*_*ium 7 c# java oop model-view-controller controller
我通过Craig Larman的应用UML和模式:面向对象分析和设计和迭代开发的介绍,在UP(统一过程)之后接受了有关OO分析和设计的教学.
在使用它时,我们通常会绘制一个Domain Model并从中进行交互/关联图,我们得到了Class Diagrams.然后我们通常Controllers会将它作为我们Model与"外部世界" 之间的"门"(遵循GRASP模式).所有世界上任何一种逻辑的访问都必须通过Controllers.我会打电话给那些人Controllers Model's Controllers,所以稍后当我们谈论MVC's Controllers我们可以区分它们时.这可以在下面最令人敬畏的图表中描述:
alt text http://dl.dropbox.com/u/6187267/pic1.jpg
在黑色中我们有我们Model的对象和类的关联.红色我们有Model Controllers,使用来自的数据Model.
基本上,下面的这种设计,你只能用工作Model通过所谓的Model's Controllers(我们通常有一个Controller每Use Case!).
在了解MVC时,我总是有一个问题,无论MVC's Controller事实Model's Controller与否?他们是相同的概念吗?我认为它们是不同的概念,因为Model Controllers我们以前做过的事情除了我们的课程之外什么都不知道Model,而这似乎不会发生在我们身上MVC's Controllers.
如果我说的是真的,下面的图表应该是有意义的:
alt text http://dl.dropbox.com/u/6187267/mvc_.png
我对吗?
我想我明白你在说什么:)
您所调用的Model Controllers称为存储库。这是一个定义您与底层模型的特定交互的接口。例如,如果您有一个代表员工的类,并且您想做三件事:
List<Employee> List()Add(int employeeID)Delete(int employeeID)然后您将定义一个名为以下内容的接口:
public interface IEmployeeRepository
{
List<Employee> List();
void Add(int employeeID);
void Delete(int employeeID);
}
Run Code Online (Sandbox Code Playgroud)
您将确保所有代码都处理接口,而不是直接处理对象 - 存储库模式。这就是您所说的Model Controller. 有关更多详细信息,请参阅http://www.dev102.com/2008/12/08/working-with-aspnet-mvc-part-2-the-model-and-the-repository-pattern/,或搜索存储库模式。
MVC 世界中的控制器实际上是决定程序流程逻辑的东西。例如,假设您有一个员工列表的视图。当用户点击此视图上的“删除”按钮时,控制器将加载适当的存储库并调用其上的删除方法。
tl;dr: MVC 控制器 = 当用户执行此操作时,在程序中执行此操作(程序逻辑);存储库(模型控制器)= 定义模型中的对象支持哪些交互
是的,你是对的:)
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |