编辑:接受克里斯霍姆斯的回应,但如果有人想出更好的方法,总是准备好重构!谢谢!
使用MVP做一些winforms将实体传递给另一个视图的最佳方法是什么.
假设我有一个CustomerSearchView/Presenter,在doubleClick我想显示CustomerEditView/Presenter.我不希望我的视图知道模型,所以我不能创建一个ICustomer参数的ctor .
我的反应是,
CustomerSearchView创建一个新的CustomerEditView,创建它自己的演示者.然后我CustomerSearchView会做类似的事情:
var customerEditView = new CustomerEditView();
customerEditView.Presenter.Customer = this.Presenter.SelectedCustomer;
Run Code Online (Sandbox Code Playgroud)
其他可能的方法是一个CustomerDTO类,并使其CustomerEditView接受其中一个CustomerDTO,但我认为这是一项很简单的工作.
对不起基本的问题,但我发现的所有例子都没有达到这一点,这是一个棕色的项目,到目前为止使用的方法让我很头疼......
我试着理解MVC/MVP和MVVM模式之间的主要区别.我找到了这3张图,但我不确定是否理解它们.你帮我解释一下,虚线和连续线的传说是什么.



GWT有很多类似名称(和看似相似的)类型:
WidgetAcceptsOneWidgetCompositeIsWidgetSimplePanel何时/何地适合使用这些?他们与谁的关系是RootPanel什么?
我正在努力使我的第一个项目可以进行单元测试.令人惊讶的是,我必须重新编写一些恶意编码风格的大脑.
这篇文章让我注意到单身人士是病态的骗子
我不是试图激进,但我习惯了一件神器,我不知道怎么能摆脱它
例:
initialization
ModelFactory.RegisterFactoryMethod('standard.contasmovimento',
function(AParam: Variant) : TModel
begin
result := TModelContasMovimento.Create(AParam);
end);
end.
Run Code Online (Sandbox Code Playgroud)
ModelFactory是一个单例,在其单元上定义,是该单元的uses子句的一部分.
在我的MVP结构中,我在其自己的单元(1个1级单元)中定义了每个模型,视图和演示者.根据每个项目的需要,可以使用所有这些单元.因此,我将其用作零件目录,根据项目我将单元添加到项目中,它会自动注册并准备好从工厂使用.
为了解决单例问题我正在考虑将它们移动到框架类,因此我可以在一个点创建对象,然后可以使用依赖注入来传递框架对象.所有的工厂和其他环境都坐在那里:
TMyFramework = class
FModelFactory: IModelFactory;
FViewFactory: IViewFactory;
FPresenterFactory: IPresenterFactory;
property ModeFactory: IModelFactory read FModelFactory;
...
Run Code Online (Sandbox Code Playgroud)
我的意思是以一种我可以在测试单元中模拟它们的方式移除单身人士.随着单身人士的到位,我无法轻易将其移除以进行测试.
但这将使我放松每个单元的自动初始化,我依靠它来添加单元.我不想手动创建可用类的列表.
有办法解决这种情况吗?
我正在使用MVP构建一个Android应用程序,我对此模式有一个疑问.
假设我有一个用于创建新人的屏幕.此屏幕将显示一个EditText用于插入名称,另一个用于ImageView显示所选照片图片等.这将导致一个View界面,由Fragment.它将与一个Presenter接口合作,由另一个类实现.
精细.
现在我有另一个功能:用于编辑现有人的屏幕.碰巧,View此功能与创建新人的功能相同.但是,Presenter情况有所不同.它将从db中加载现有人员以使用当前数据预先填充视图开始,单击"save"时对数据库的操作将是更新而不是插入.
因此,我认为这是MVP的一个示例,其中一个View与演示者的不同实现一起工作以实现不同的用例.
你认为这是一个正确的假设,或者你觉得不同的特点应该有不同的View和Presenter接口?
另外,如果你有一个共同的View和不同的Presenters,将View是共同的实现,还是会导致两个类实现相同的接口?在实践中,我看到两个选项.
只有一个Fragment实施View.根据用户是要创建新人还是更新现有人,Fragment应该接收并使用不同的Presenter.
有两个Fragment.每个人都会实例化一个不同的Presenter.使用组合或继承来避免在两个片段之间复制代码.
在这些情况下,您认为更好的做法是什么?
谢谢.
首先,我知道使用Model View Presenter有不同的实现,在我看来,只要你清楚地定义了抽象层并完成了他们指定的角色,那么你如何实现这种模式是开放的解释.我在很多只有一个应用程序的应用程序中实现了这种模式Activity.我现在已经开始了一个具有多个活动并附加的新项目Fragments,包括嵌套片段(ViewPager).
我现在正试图将MVP翻译成这个项目,我已经打了一个概念墙,想要一些指导和见解.
到目前为止,我已经创建了上述结构,开始做一个1:查看&主讲人(不管1的关系Activity或Fragment).我觉得这没关系,但是例如我发送了一个请求从ActivityView向其Presenter 做了一些事情,它将结果返回到ActivityView我将如何传播结果,即更新所有其他活动/片段目前不在Paused()或Stop()州.我觉得在这种情况下应该有一个中央Presenter更新所有必要的Activity和Fragment Views,但我不知道如何去做.
目前,当每个Activity和Fragment创建它时,它创建一个Presenter类的新实例,将其自身作为引用传递(活动和片段实现它们自己的接口),演示者将其存储为a,WeakReference并在返回结果时调用相关的接口方法.
根据文档,每当Fragments想要彼此通信和附加时,Activity您应该使用回调接口.考虑到这一点,我应该有一个回调接口,该活动器具和Fragments回调时,他们要求的东西,所以在本质上只是活动将有一个片段具有回调,以便使各种请求演示和模型层?
对不起,如果这听起来有点混乱,希望这足以清楚地了解我想要达到的目标,如果我正在思考正确的方向......或者完全不合适!
mvp android design-patterns android-fragments android-activity
嗨,我正在阅读这篇文章https://news.realm.io/news/eric-maxwell-mvc-mvp-and-mvvm-on-android/,他们很好地解释了mvc,mvp,mvvm.我知道mvp设计模式是如何工作的.
我没有发现MVP优于MVVM的任何缺点.他们认为这是个问题
演示者关注 - >维护 - 与控制器一样,演示者随着时间的推移倾向于收集额外的业务逻辑.在某些时候,开发人员经常会发现自己的大型笨重的演示者难以分开.
任何人都可以通过一个例子解释它意味着什么以及如何使用MVVM解决它?
使用MVVM或MVP,我应该为模型,视图模型,视图等程序包命名,并在其中放置适当的类和接口,还是仅仅是在类结构中不可见的逻辑结构?
mvp ×10
android ×5
mvvm ×3
.net ×1
architecture ×1
c# ×1
delphi ×1
gwt ×1
java ×1
node.js ×1
presenter ×1
structure ×1
ui-patterns ×1
unit-testing ×1
winforms ×1