对MVC存在很多困惑,但是在浏览了Head First模式书之后(作为旁注,我讨厌该品牌,虽然这个例子相当不错)但它声称MVC或模型视图控制器是多种模式的混合体 - 调解员,观察员等......
在最近的原型中,我做了以下操作,它是C#,但应该很简单。
Person : IPerson {
public Name { get; set;}
public Age { get; set;}
}
IPerson只是一个定义上述内容的界面 - 为了简单起见,我把它留了下来。
PersonController : IPersonController {
public event DetailsUpdated;
public void SetAge(int age);
public int GetAge();
public void SetName(string name);
public string GetName();
}
我知道上面可能是属性本身 - 但这只是一个简单的例子。每次有些数据发生变化时都会触发事件 - 例如在SetAge / SetName。
interface IView {
void Initialize();
void SetAgeClicked(object sender, EventArgs e);
void SetNameClicked(object sender, EventArgs e);
}
初始化电线 - 例如表格上的文本框。 SetAge / SetName是按钮事件 - 因此表单/页面等..使用必须具有这些方法。
Form : IView {
// IView is implemented.
// Form is wired up
// Initialize is set etc...
}
我听说MVC的测试是当你添加一个新的视图时,它很容易得到启动和运行 - 好吧是的。但是,这是MVC吗?这是别的吗?
任何建议/意见都会很棒。它有效 - 它只是想知道为什么。
感谢。
答案 0 :(得分:2)
答案 1 :(得分:2)
我想说你的MVC(Model-View-Presenter)比MVC更像。 MVP主要有两种......监督控制器和被动视图。你在这里看到的最接近Passive View,这是一个非常经典的MVP实现,人们用它来改进和抽象WebForms。您可以在此处阅读有关WebForms的MVP实现的更多信息:
同样的一般想法也适用于Windows Forms。
答案 2 :(得分:1)
虽然这是MVC的实现,但它没有使用one Microsoft made and recently released。来自Scott Gutherie的Overview of it,如果你想要一些历史。有些人可能将其称为MVP而不是Controller,该部分称为Presenter,通常用于处理业务逻辑和用户交互。