首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模型和控制器之间的关注点分离

模型和控制器之间的关注点分离
EN

Stack Overflow用户
提问于 2014-07-23 04:09:29
回答 5查看 707关注 0票数 3

我仍然在努力理解这种关注点的分离,有一件事我不明白,那就是模型和控制器在数据修改方面的区别。

假设我有一个简单的模型:

代码语言:javascript
运行
复制
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));吗?或者我应该创建一个在模型中转移资金的方法,并只调用这个方法?

EN

回答 5

Stack Overflow用户

发布于 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

你会得到很多概念和想法,可以帮助你的未来。

然后最重要的是要有很多工具,并准确地使用适合你的问题的人。

票数 0
EN

Stack Overflow用户

发布于 2014-07-23 04:32:11

此链接将帮助您更好地理解:

http://tomdalling.com/blog/software-design/model-view-controller-explained/

总之,Model处理与数据相关的操作,Controller处理用户输入、计算(在您的情况下)、条件等操作,View向用户显示格式化的输出。

我希望这能帮到你。

票数 0
EN

Stack Overflow用户

发布于 2014-07-23 04:48:00

基本上,控制器所做的是将表示层(视图)粘合到后端层(数据模型)。

在分离关注点时,视图永远不应该知道模型,模型也不应该知道视图。它们之间唯一的连接是中间层,也就是控制器,所以如果你想转移或更新资金,它必须离开视图,在contoller中触发一个操作,而后者在模式中触发一个数据库操作。

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24896921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档