Model view controller MVC系统是如何工作的?
我试图学习MVC模式,但每个地方都有不同的说法。所以现在我不知道什么是真正的MVC 所以我猜这是最纯粹的MVC:Model view controller MVC系统是如何工作的?,model-view-controller,oop,design-patterns,Model View Controller,Oop,Design Patterns,我试图学习MVC模式,但每个地方都有不同的说法。所以现在我不知道什么是真正的MVC 所以我猜这是最纯粹的MVC: 模型仅为数据并通知数据更改 视图读取模型的消息以更新视图 控制器从视图读取用户输入,并根据需要更改模型 实施 模特不认识任何人 视图知道模型 控制器既知道视图又知道模型 伪代码: /* Model */ class Color{ color = blue; setColor(color); notifyUpdate(); } /* View */ class C
- 模型仅为数据并通知数据更改
- 视图读取模型的消息以更新视图
- 控制器从视图读取用户输入,并根据需要更改模型
- 模特不认识任何人
- 视图知道模型
- 控制器既知道视图又知道模型
/* Model */
class Color{
color = blue;
setColor(color);
notifyUpdate();
}
/* View */
class ColorPicker(model){
model.register(update);
update(){
this.colorToExhibit = model.color;
}
}
/* Controller */
class Colorize(view, model){
view.register(update);
update(color){
model.setColor(color);
}
}
一些问题:
- 模型只是数据和通知数据更改
- 视图读取模型的消息以更新视图
- 控制器从视图中读取用户输入,并根据需要更改模型
- 模特不认识任何人
- 视图知道模型
- 控制器同时知道视图和模型
View Raise(GameState state)
{
// Interact with the Models to update the known state of the game.
// The Models would perform the actual Poker game logic.
// Respond with a View bound to updated Models.
}
一旦控制器用新视图响应UI,该视图将包含要向用户显示的任何动画。(毕竟,除非操作成功,否则您不希望执行动画,对吗?当控制器使用指示操作成功的新视图响应UI时,动画将播放。它可能会使用指示错误的视图响应UI,在这种情况下,该视图将显示其他内容。)如果您对历史上真正的MVC感兴趣,请从开始。他在20世纪70年代末创建(观察、编目)了它。从1979年开始读。它定义了术语。请注意它的标题-这三个角色都是多元化的。这是大多数人似乎第一件出错的事情 关于MVC最初的使用,我发现最好的描述是在2004年的一篇题为。我猜描述Smalltalk 80 MVC最终版本的规范性论文是Krasner&Pope和 史蒂夫·伯贝克的。这两篇论文都很值得一读 如果你有时间消磨时间,并且不介意听罗伯特·马丁的话,他在MVC方面做得很好。信息技术
public class BankAccount
{
public int ID;
public int Balance;
public BankAccount(int id)
{
ID = id;
Balance = DetermineAmount();
}
public int DetermineAmount()
{
// Gather transaction info, debits, credits and return a
// sum of the amount left in the account depending on the
// id provided.
}
}
public class BankAccountController
{
public ViewResult Index(int id)
{
BankAccount account = new BankAccount(id);
return View(account);
}
}
<ul id="account-info">
<li>Account ID: `@Model.ID`</li>
<li>Balance: `@Model.Balance`</li>
</ul>