标签: mvp

MVC(或MVP)可以与SOA共存吗?

我认为在使用MVC或MVP设计模式时,业务逻辑应存在于模型中,但应隐藏在面向服务的体系结构中的服务之后.

软件系统可以在面向服务的体系结构中使用MVC或MVP设计模式吗?如果是这样,模特在哪里?

architecture model-view-controller mvp soa

8
推荐指数
1
解决办法
6446
查看次数

模型视图演示者,如何在视图之间传递实体?

编辑:接受克里斯霍姆斯的回应,但如果有人想出更好的方法,总是准备好重构!谢谢!

使用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,但我认为这是一项很简单的工作.

对不起基本的问题,但我发现的所有例子都没有达到这一点,这是一个棕色的项目,到目前为止使用的方法让我很头疼......

c# mvp winforms

8
推荐指数
1
解决办法
5585
查看次数

使用WinForms进行MVP异步调用的最佳实践

我在WinForms项目中使用了Model-View-Presenter模式,我遇到的一个问题是当表单告诉演示者做某事然后在演示者去做时没有反应时.幸运的是,在我的项目中,我所有的presenter调用都是异步的,问题是如何做到这一点?

每个演示者调用是否应该包含在新的线程创建中?*

new Thread(()=>_presenter.DoSomething()).Start();
Run Code Online (Sandbox Code Playgroud)

这里最好的做法是什么?如果用户按下"中止您正在做的事情"按钮怎么办?我该如何优雅地流产?

.*实际上我可能只是在演示者上使用某种代理来执行此操作而不是将线程创建放在WinForm中

.net mvp multithreading winforms

8
推荐指数
2
解决办法
2419
查看次数

讨论iPhone上的MVC实现

我是在不同的框架上使用MVC模式一段时间,例如(swing,android,gwt ...)现在,我正在学习iPhone框架,我对MVC实现感到非常惊讶.我问的问题是关于视图和控制器的交互.

首先,这就是我构思MVC模式的方式:

  • 视图和控制器通过接口相互通信(一个用于视图,另一个用于控制器)

  • 在我对MVC模式的概念中,控制器不必知道视图的属性.(例如,控制器不能具有视图的标签属性实例,但可以通过视图接口的方法请求视图更改此标签的值)

不让控制器直接在视图UI元素上工作的优点是耦合度低,因此可以更容易地测试视图.可以在隔离(或使用模拟控制器)上启动和测试视图.

关键是,在iPhone上,控制器(例如ViewController)直接知道UI元素,因此我不理解.我的目标不是批评我刚刚学习的框架.但如果这真的像我描述的那样工作,我发现它并不干净......

有没有人对这个框架进行更多实验,谁可以给我详细说明?或者,如果您对我的MVC方法有不同意见,请告诉我;)

更重要的是,我问我的方法是不是MVP(在此描述:http://code.google.com/intl/fr/webtoolkit/articles/testing_methodologies_using_gwt.html)而不是MVC.

iphone model-view-controller mvp

8
推荐指数
1
解决办法
620
查看次数

从Delphi项目中删除单例实例

我正在努力使我的第一个项目可以进行单元测试.令人惊讶的是,我必须重新编写一些恶意编码风格的大脑.

这篇文章让我注意到单身人士是病态的骗子

我不是试图激进,但我习惯了一件神器,我不知道怎么能摆脱它

例:

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)

我的意思是以一种我可以在测试单元中模拟它们的方式移除单身人士.随着单身人士的到位,我无法轻易将其移除以进行测试.

但这将使我放松每个单元的自动初始化,我依靠它来添加单元.我不想手动创建可用类的列表.

有办法解决这种情况吗?

delphi mvp unit-testing

8
推荐指数
1
解决办法
362
查看次数

在Android中实现Model-View-Presenter的困难

Model-View-Presenter(MVP)是一种众所周知的GUI应用程序设计模式.对于Android,在普通Java模块中实现业务逻辑有助于测试而无需Android模拟器.

但是,由于Android应用程序GUI的特殊要求,我在Android上实现模式时遇到了困难:

  • 可以在任何时候销毁活动(来电,用户按下主页按钮,......),并且在重新创建时,它应该处于与其离开时完全相同的状态.这与大多数其他GUI应用程序不同.

  • 活动可以经历许多生命周期状态.可能会暂停,在这种情况下,不应修改活动的UI.例如,如果某些数据在后台加载,则如果它处于暂停状态,则无法将其传递给MVP(Activity)的View部分.同样,这是一个不寻常的要求.

我已经阅读了MVP for Android的博客文章并查看了示例源代码.我试图通过使用MVP模式实现的最终目标是能够使用转换器j2objc将所有业务逻辑转换为Objective-C ,这样在iOS上实现相同的应用程序时可以重用业务逻辑.

有没有人成功实现了Android的MVP模式,在这种情况下,我错过了什么?

mvp android android-activity j2objc

8
推荐指数
1
解决办法
2947
查看次数

模型视图演示者 - 相同的视图,不同的演示者

我正在使用MVP构建一个Android应用程序,我对此模式有一个疑问.

假设我有一个用于创建新人的屏幕.此屏幕将显示一个EditText用于插入名称,另一个用于ImageView显示所选照片图片等.这将导致一个View界面,由Fragment.它将与一个Presenter接口合作,由另一个类实现.

精细.

现在我有另一个功能:用于编辑现有人的屏幕.碰巧,View此功能与创建新人的功能相同.但是,Presenter情况有所不同.它将从db中加载现有人员以使用当前数据预先填充视图开始,单击"save"时对数据库的操作将是更新而不是插入.

因此,我认为这是MVP的一个示例,其中一个View与演示者的不同实现一起工作以实现不同的用例.

  1. 你认为这是一个正确的假设,或者你觉得不同的特点应该有不同的ViewPresenter接口?

  2. 另外,如果你有一个共同的View和不同的Presenters,将View是共同的实现,还是会导致两个类实现相同的接口?在实践中,我看到两个选项.

    • 只有一个Fragment实施View.根据用户是要创建新人还是更新现有人,Fragment应该接收并使用不同的Presenter.

    • 有两个Fragment.每个人都会实例化一个不同的Presenter.使用组合或继承来避免在两个片段之间复制代码.

在这些情况下,您认为更好的做法是什么?

谢谢.

mvp android design-patterns presenter ui-patterns

8
推荐指数
1
解决办法
1252
查看次数

MVP项目中包结构的最佳实践

我有一个使用MVP架构的Android Studio项目.我们可以做这个样式的项目的建议包结构是什么:

app:
  screen_name
    activityA
    presenterA
    interfaceA

or:
   activities
     activityA
     activityB
   preentors
     presentorA
     presentorB
etc
Run Code Online (Sandbox Code Playgroud)

mvp android package

8
推荐指数
1
解决办法
5241
查看次数

MVP winforms中的数据绑定

我有一个在MVP中实现的WinForms应用程序.我的表单有一个TextBox,我想将其Text属性数据绑定到Model中的属性.我不想在视图中引用模型.

在谷歌搜索后,我发现通过耦合模型和视图进行数据绑定是一个坏主意.我的样品初始化Model,View并且Presenter是如下.

class View : Form, IView
{
    public View()
    {
        InitializeComponent();
        new Presenter(this);
    }
}

class Presenter
{
    public Presenter(IView) : this.Presenter(this, new Model())
    {
    }

    public Presenter(IView view)
    {
    }
}

class Model : IModel
{
    public Model()
    {
    }

}
Run Code Online (Sandbox Code Playgroud)

目前我已经为每3个项目Model,ViewPresenter.View参考PresenterPresenter参考Model.任何人都可以指导我如何形成数据绑定到控件View到属性Model

编辑

我知道在Grid中做的事情.我们可以在演示者中将Datasource网格的属性分配给List(或类似的),如:

_view.DataSource = _model.ListOfEmployees;
Run Code Online (Sandbox Code Playgroud)

这将反映 …

c# data-binding mvp winforms

7
推荐指数
2
解决办法
7168
查看次数

Android MVP - 活动应该是视图还是演示者?

我想用MVP模式实现我的下一个应用程序,所以我开始阅读一些关于如何实现它的文章.对我来说,主要的问题是这种模式有不同的方法.有些人说我们应该将活动视为一种观点,而另一些人则认为活动应该是一种主持人.

此处描述了作为视图的活动:MVP Android ,它是有道理的.但另一方面,我发现这个答案有几个upvotes /sf/answers/532696041/,有人说活动应该是主持人.

有没有人有这种模式的经验?

mvp android design-patterns

7
推荐指数
3
解决办法
8115
查看次数