当超越RAD(拖放和配置)构建用户界面的方式时,许多工具鼓励您可能会遇到三种设计模式,称为模型 - 视图 - 控制器,模型 - 视图 - 展示器和模型 - 视图 - 视图模型.我的问题有三个部分:
model-view-controller mvp user-interface glossary design-patterns
如果我们使用短语"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)的外观有何不同,那么请将我重定向到该文章.
我正在尝试使用WinForms首次实现MVP方法.
我试图了解每一层的功能.
在我的程序中,我有一个GUI按钮,当单击时会打开一个openfiledialog窗口.
因此,使用MVP,GUI处理按钮单击事件,然后调用presenter.openfile();
在presenter.openfile()中,是否应该将该文件的开头委托给模型层,或者因为没有要处理的数据或逻辑,它应该只是对请求进行操作并打开openfiledialog窗口吗?
更新: 我已经决定提供赏金,因为我觉得我需要进一步的帮助,最好根据我的具体要点量身定制,以便我有上下文.
好的,在阅读了MVP后,我决定实施被动视图.实际上,我将在Winform上有一堆控件,由Presenter处理,然后委托给Model.我的具体要点如下:
当winform加载时,它必须获得树视图.我认为视图应该调用一个方法如:presenter.gettree(),这是正确的,这将依次委托给模型,该模型将获取树视图的数据,创建并配置它,将其返回给演示者,然后将传递到视图,然后将其简单地分配给一个面板?
对于Winform上的任何数据控件,这是否相同,因为我还有一个datagridview?
我的应用程序,有许多具有相同程序集的模型类.它还支持插件架构,其插件需要在启动时加载.视图是否只调用一个presenter方法,然后调用一个加载插件并在视图中显示信息的方法?然后哪个层控制插件引用.视图是否会引用它们或演示者?
我认为视图应该处理关于表示的每一件事,从树视图节点颜色到数据网格大小等,我是否正确?
我认为这是我的主要关注点,如果我理解这些流程应该如何,我想我会没事的.
有人可以用尽可能简单的方式解释Model View Presenter模式是什么吗?与模型视图控制器有什么区别?哪个最好或用于哪个目的?
我已经玩了几个星期的MVP模式,我已经到了需要上下文来启动service和访问的地步Shared Preferences.
我已经读过MVP的目的是将视图与逻辑分离,并且context在一个内部Presenter可以打败那个目的(如果我错了,请纠正我).
目前,我有一个看起来像这样的LoginActivity:
LoginActivity.java
public class LoginActivity extends Activity implements ILoginView {
private final String LOG_TAG = "LOGIN_ACTIVITY";
@Inject
ILoginPresenter mPresenter;
@Bind(R.id.edit_login_password)
EditText editLoginPassword;
@Bind(R.id.edit_login_username)
EditText editLoginUsername;
@Bind(R.id.progress)
ProgressBar mProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
MyApplication.getObjectGraphPresenters().inject(this);
mPresenter.setLoginView(this, getApplicationContext());
}
@Override
public void onStart() {
mPresenter.onStart();
ButterKnife.bind(this);
super.onStart();
}
@Override
public void onResume() {
mPresenter.onResume();
super.onResume();
}
@Override
public void onPause() {
mPresenter.onPause();
super.onPause();
}
@Override
public void onStop() …Run Code Online (Sandbox Code Playgroud) 什么是Interactor?它如何适应MVP设计?使用交互器与将交互器代码放在演示者中有什么优点/缺点?
我很清楚这些模式中的每一个是如何工作的,并且知道它们之间的一些细微差别,但它们真的是彼此之间的差异吗?
在我看来,Presenter,Presentation Model,ViewModel和Controller本质上是相同的概念.
为什么我不能将所有这些概念归类为控制器?我觉得它可能会大大简化整个想法.
任何人都可以清楚地描述他们的差异吗?
我想澄清一点,我确实理解模式是如何工作的,并且已经在一种技术或另一种技术中实现了大部分模式.我真正想要的是某人对这些模式之一的体验,以及为什么他们不会将他们的ViewModel视为一个控制器.
我会给出一些声望点,但我正在寻找一个非常好的答案.
model-view-controller mvp design-patterns presentation-model mvvm
我最近在一个.Net WPF项目上建立了一个零售销售点系统,我第一次使用了MVP模式.我花了一点时间围绕着改变方法,但是一旦我这样做,我就认为这个概念震撼了!
我的问题是:MVC,MVP和MVVM之间有什么区别?如果有明确的区别,是否有关于何时应该使用一种模式而不是另一种模式的准则?
如果有人可以就此提供指导,或者指出解释差异的文章,我将非常感激.
是否有用于解释模型 - 视图 - 演示者(MVP)模式的良好示例代码或测试项目.有很多解释链接,但我希望有一些很好的示例代码,以显示其他人而无需重新发明轮子.
我有一个包含两个片段的活动.
activity(MainActivity)从开放的天气api中检索数据.我已经实现MVP此,其中:
Model包含所有响应对象从API
View是Activity
Presenter包含MainPresenter,MainPresenterImpl,MainView,GetDataInteractor和GetDataInteractorImpl.
因此,活动从Web服务获取数据.两个片段都将显示活动中检索到的数据中的数据.
在这种情况下使用MVP的最佳做法是什么?我知道如何通过接口/回调在片段< - >活动之间传递数据,我的问题是在实现MVP时这种行为会改变吗?