如果我们使用短语"MVC,MVP和MVVM设计模式之间有什么区别"来搜索Google,那么我们可能会得到一些URL ,它们在理论上讨论了MVC MVP和MVVM设计模式之间的区别:
MVP
在无法通过datacontext进行绑定的情况下使用.Windows Forms就是一个很好的例子.为了将视图与模型分开,需要演示者.由于视图无法直接绑定到演示者,因此必须通过接口(IView)将信息传递给视图.
MVVM
在可以通过datacontext进行绑定的情况下使用.为什么?删除了每个视图的各种IView接口,这意味着需要维护的代码更少.可以使用MVVM的一些示例包括使用Knockout的WPF和javascript项目.
MVC
用于视图与程序其余部分之间的连接并不总是可用的情况(并且您无法有效地使用MVVM或MVP).这清楚地描述了Web API与发送到客户端浏览器的数据分离的情况.Microsoft的ASP.NET MVC是一个管理这种情况的好工具,并提供了一个非常清晰的MVC框架
但我没有找到一篇文章,从理论上和示例代码讨论差异.
如果我得到一篇文章讨论这3种设计模式(MVC,MVP和MVVM)与代码之间的区别,那将是非常好的.
我想了解3个类似的CRUD应用程序的源代码,这些应用程序已经通过这三种设计模式(MVC,MVP和MVVM)实现.这样我就可以浏览代码并理解应该如何为这三种设计模式(MVC,MVP和MVVM)编写代码.
因此,如果存在任何此类文章讨论代码对于这3种设计模式(MVC,MVP和MVVM)的外观有何不同,那么请将我重定向到该文章.
什么是数据传输对象?
在MVC中是模型类DTO,如果没有,有什么不同,我们是否需要两者?
architecture model-view-controller data-transfer data-transfer-objects dto
我想我理解MVC的基本概念 - 模型包含应用程序的数据和行为,View负责将其显示给用户,Controller负责处理用户输入.我不确定的是控制器中究竟是什么.
让我们说例如我有一个相当简单的应用程序(我专门考虑Java,但我认为相同的原则适用于其他地方).我将我的代码组织成3个叫做的包app.model,app.view和app.controller.
在app.model包中,我有一些反映应用程序实际行为的类.这些extends Observable并使用setChanged()和notifyObservers()触发视图以在适当时更新.
该app.view包具有一个类(或几个类用于不同类型的显示),它使用javax.swing组件来处理显示.其中一些组件需要反馈到模型中.如果我理解正确,View不应该与反馈有任何关系 - 应该由Controller处理.
那么我实际上在Controller中放了什么?我public void actionPerformed(ActionEvent e)只需要调用Controller中的方法,就可以将其放入View中吗?如果是这样,是否应在控制器中进行任何验证?如果是这样,我如何将错误消息反馈回View - 如果再次通过Model,或者Controller是否应该直接将其发送回View?
如果在视图中完成验证,我应该在Controller中添加什么?
很抱歉这个问题很长,我只想记录我对这个过程的理解,希望有人可以为我澄清这个问题!
我有这个AngularJS应用程序.一切正常.
现在我需要在特定条件成立时显示不同的弹出窗口,我想知道什么是最好的方法.
目前我正在评估两个选项,但我绝对愿意接受其他选择.
我可以为弹出窗口创建新的HTML元素,并直接从控制器附加到DOM.
这将打破MVC设计模式.我对这个解决方案不满意.
我总是可以在静态HTML文件中插入所有弹出窗口的代码.然后,使用ngShow,我可以隐藏/只显示正确的弹出窗口.
此选项不是真正可伸缩的.
所以我很确定必须有更好的方法来实现我想要的.
我有两个问题:
Q1.MVC模式中"业务逻辑"到底在哪里?我在模型和控制器之间感到困惑.
Q2."业务逻辑"是否与"业务规则"相同?如果没有,有什么区别?
如果你能用一个小例子来解释它会很棒.
model-view-controller design-patterns business-logic business-rules
我有一个下拉列表,显示从表到最终用户的值.我想按字母顺序排序这些值.
根据适当的MVC设计,我应该在哪个层放置我的排序逻辑:模型,视图还是控制器?
编辑:在回答LarsH的问题时,"你的意思是代码决定了什么样的顺序吗?或代码执行排序?",我最初指的是确定所需排序顺序的代码.
我在Stack Overflow上搜索了一下,没有找到任何好的答案.
我所相信的是,数据绑定是一个通用术语,有不同的实现方式,如观察者模式或发布/子模式.使用Observer模式,Observable更新其观察者.使用Pub/Sub,0-many发布者可以发布某些类的消息,0-many订阅者可以订阅某些类的消息.
是否有其他实施"数据绑定"的模式?
data-binding model-view-controller design-patterns publish-subscribe observer-pattern
在Ruby on Rails开发(或一般的MVC)中,我应该遵循什么快速规则来放置逻辑.
请回答是肯定的 - 把Do放在这里,而不是把它放在那里.
我是一个巨大的AngularJS n00b,我甚至发现教程很难理解.本教程将引导我构建一个显示电话的应用程序.我在第5步,我认为这是一个实验,我试图让用户指定他们想要显示多少.该视图如下所示:
<body ng-controller="PhoneListCtrl">
<div class="container-fluid">
<div class="row-fluid">
<div class="span2">
<!--Sidebar content-->
Search: <input ng-model="query">
How Many: <input ng-model="quantity">
Sort by:
<select ng-model="orderProp">
<option value="name">Alphabetical</option>
<option value="age">Newest</option>
</select>
</div>
<div class="span10">
<!--Body content-->
<ul class="phones">
<li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
{{phone.name}}
<p>{{phone.snippet}}</p>
</li>
</ul>
</div>
</div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我添加了这一行,用户可以输入他们想要显示的结果数量:
How Many: <input ng-model="quantity">
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
function PhoneListCtrl($scope, $http) {
$http.get('phones/phones.json').success(function(data) {
$scope.phones = data.splice(0, 'quantity');
});
$scope.orderProp = 'age';
$scope.quantity = 5;
}
Run Code Online (Sandbox Code Playgroud)
重要的是: …
我想知道MVC(这是一种架构模式)与应用程序的n层架构之间究竟有什么区别.我搜索了它但找不到简单的解释.可能我对MVC概念有点天真,所以如果有人能解释其中的差异,那就太棒了.
干杯
angularjs ×2
javascript ×2
architecture ×1
asp.net-mvc ×1
c# ×1
data-binding ×1
dto ×1
java ×1
mvp ×1
mvvm ×1
popup ×1
ruby ×1
scope ×1
show-hide ×1