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 控制器 = 当用户执行此操作时,在程序中执行此操作(程序逻辑);存储库(模型控制器)= 定义模型中的对象支持哪些交互
是的,你是对的:)