我仍然在努力理解这种关注点的分离,有一件事我不明白,那就是模型和控制器在数据修改方面的区别。
假设我有一个简单的模型:
public class BankAccount
{
private decimal amount;
public decimal Amount
{
get
{
return amount;
}
private set
{
amount = value;
}
}
public BankAccount(decimal amount)
{
Amount = amount;
}
public decimal DepositMoney(decimal amount)
{
Amount += amount;
return amount;
}
public decimal WithdrawMoney(decimal amount)
{
Amount -= amount;
return amount;
}
}我相信这就是模型的全部内容。但是,我在哪里调用这些方法呢?它是在一个控制器里面吗?我可以在那里修改数据吗?例如,如果我想把一些钱从Jim转到Joe;我会从控制器调用这个方法joe.DepositMoney(jim.WithdrawMoney(25));吗?或者我应该创建一个在模型中转移资金的方法,并只调用这个方法?
发布于 2014-07-23 04:31:25
一个模型应该有与他自己的功能相关的功能。你可以有一个接收另一个帐号的函数调用。
控制器是处理用户交互的组件,使用模型,并最终选择要呈现的视图来显示UI
你应该在你的控制器中使用这个方法。无论如何,我建议你保持你的项目稳定,如果你的项目增长(他们增长很快),你会在你的控制器中完成很多逻辑,并且很难解决bug。
您可以使用服务来保持外部控制器和控制器使用此服务的逻辑。无论如何,这是一个非常简单的方法。我建议你读一些像这样的书:http://blogs.msdn.com/b/cesardelatorre/archive/2010/03/26/our-brand-new-ddd-n-layer-net-4-0-architecture-guide-book-and-sample-app-in-codeplex.aspx
你会得到很多概念和想法,可以帮助你的未来。
然后最重要的是要有很多工具,并准确地使用适合你的问题的人。
发布于 2014-07-23 04:32:11
此链接将帮助您更好地理解:
http://tomdalling.com/blog/software-design/model-view-controller-explained/
总之,Model处理与数据相关的操作,Controller处理用户输入、计算(在您的情况下)、条件等操作,View向用户显示格式化的输出。
我希望这能帮到你。
发布于 2014-07-23 04:48:00
基本上,控制器所做的是将表示层(视图)粘合到后端层(数据模型)。
在分离关注点时,视图永远不应该知道模型,模型也不应该知道视图。它们之间唯一的连接是中间层,也就是控制器,所以如果你想转移或更新资金,它必须离开视图,在contoller中触发一个操作,而后者在模式中触发一个数据库操作。
谢谢
https://stackoverflow.com/questions/24896921
复制相似问题