标签: mvp

为什么Microsoft选择MVC for ASP.NET?

除了30年的模式之外,MVC从未用于当前的应用程序.MVP是其继任者,旨在处理90年代推出的基于事件的应用程序.被动视图和监督控制器似乎已经上升到顶部.对于这两者,几乎没有必要谈论MVC/MVP.

具体来说,ASP.NET MVC中的控制器操作是否会带回创建该视图的视图?在MVC中,控制器不会创建视图或与它们对话.将ASP.NET MVC称为MVC实现有多准确?或者,它的准确名称是什么?

model-view-controller mvp asp.net-mvc design-patterns passive-view

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

模型视图Presenter MVP中的模型

我认为MVP中M代表的"模型"可以是域模型还是演示/视图模型,我是否正确?

mvp design-patterns

3
推荐指数
1
解决办法
904
查看次数

模型 - 视图 - 展示器模式中"视图"的目的是什么?

我理解模型 - 视图 - 展示器模式是一个好模式的一般原因.它将关注点分开,以便处理向用户呈现信息的相同代码部分不用担心计算等问题.我的问题是为什么我们需要一个基本上什么都不做的视图?所有观点都告诉演示者做好工作并从演示者那里获得结果.例如,在我的C#视图中,我经常只有一堆事件处理程序来调用在演示者中实现的委托.为什么不组合视图和演示者?没有关注真的是分开,因为视图没有任何问题.

c# mvp user-interface winforms

3
推荐指数
1
解决办法
203
查看次数

如果"Presenter"在"视图"上设置属性是否违反了MVP模式?

我是MVP的新手并试图了解情况.

而且我被困在一点:

为了能够在我的View上进行单元测试,我还希望将一些属性设置转移到PRESENTER.这样我就可以看到是否设置了一些View属性并设置正确.

但是在这一点上,我的第六感很让我耳语,我开始怀疑我是否通过这样做打破了MVP模式.因为它听起来像"设置"而不是"呈现"给我:(

那么,如果"Presenter"在"视图"上设置属性是否违反了MVP模式?

谢谢

.net c# asp.net mvp unit-testing

3
推荐指数
1
解决办法
404
查看次数

为什么谷歌会推荐MVP用于MVT?

Google建议将MVP用于构建GWT应用程序的原因是什么?当View层直接意识到模型是什么时,我真的很喜欢MVC方法 - 为什么他们认为这是个坏主意?

java model-view-controller mvp gwt

3
推荐指数
1
解决办法
561
查看次数

转换派生类型和动态最佳实践

我正在使用C#4.0开发一个项目.我有几个presenter类,它们都继承自同一个基类.这些演示者类中的每一个都有一个"当前"对象,该对象特定于每个演示者,但它们都有一个共同的继承类,当然与演示者分开.

在可怕的伪代码中:

class ApplicationPresenter inherits BasePresenter
   Pubilc PersonApplication Current (inherited from Person)
class RecordPresenter inherits BasePresenter
   Public PersonRecord Current (inherited from Person)
class InquiryPresenter inherits BasePresenter
   Public PersonInquiry Current (inherited from Person)
Run Code Online (Sandbox Code Playgroud)

...等等

有没有办法让它可以从任何这些中调用"当前",而不需要类型检测,但是它是否与最佳实践保持一致?

我认为最好的选择就是让它成为一个动态的,因为我知道无论我传递给它的是什么,都会有"当前"并且这样做.那是对的吗?

或者有一种方法可以创建:

class BasePresenter
   Public Person Current
Run Code Online (Sandbox Code Playgroud)

并适当地进行演员表演?

我知道有很多方法可以解决这个问题,但我正在寻找干净和适当的方法.

谢谢!

c# mvp c#-4.0

3
推荐指数
1
解决办法
148
查看次数

MVP Winforms和文本框组合框值

我有一个带有列表作为数据源的组合框。此列表包含具有其属性(名称,地址等)的对象(客户)。当我选择组合框的一个项目时,我想将信息(地址,邮政编码...)传递给表单上的某些文本框。在我的测试1tier应用程序中,这是正确的。但是我正在开发的主要应用程序是基于MVP的(我对此有自己的看法)。我面临的问题是铸造。由于我的看法不了解我的模型,因此不应允许我使用(客户)。string address = ((Customers)comboBox1.SelectedItem).CustomerAddress;

1层测试代码:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    //getCustomers((int)comboBox1.SelectedValue);
    //txtAddress.Text =Convert.ToString( comboBox1.SelectedValue);
    Customers p = (Customers)comboBox1.SelectedItem;
    string s = comboBox1.SelectedItem.ToString();
    string address = ((Customers)comboBox1.SelectedItem).CustomerAddress;
    txtAddress1.Text = address;
}

private void Form3_Load(object sender, EventArgs e)
{
    using (var emp = new EmployerEFEntities())
    {
        var query = from customers in emp.Customers
                    select customers;

        comboBox1.DisplayMember = "CustomerName";
        comboBox1.ValueMember = "CustomerID";
        comboBox1.DataSource = query.ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经研究了几天,但没有成功。我希望有人能给我正确的方向。

实际应用程序的代码:

视图:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    txtName.Text = comboBox1.SelectedValue.ToString(); …
Run Code Online (Sandbox Code Playgroud)

c# mvp combobox winforms

3
推荐指数
1
解决办法
983
查看次数

应该将演示者(mvP)注入(dagger2)到android中的视图吗?

在开发和Android应用程序的上下文中,我应该使用'new'直接在视图中使用演示者,还是如果我将它们注入视图会更好.

不使用注入演示者的优点/缺点:

  1. 更快的开发时间,无需编写组件和模块.
  2. 演示者与视图紧密耦合,我不认为这是一个很大的问题,因为大多数时间演示者不会在多个视图之间共享(即,演示者只有一个视图).
  3. 可能是测试的问题,就像使用依赖注入一样,可以提供演示者的模拟实现(不确定这是否有用,需要更多地了解这一点).

mvp android presenter dagger-2

3
推荐指数
1
解决办法
991
查看次数

Kotlin通用界限

我正在尝试将我的MVP解决方案从JAVA移植到Kotlin,我对泛型有很大的问题.这就是我的JAVA类的样子:

public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements BaseView 

public abstract class BasePresenter<V extends BaseView>

public interface BaseView 
Run Code Online (Sandbox Code Playgroud)

并移植到Kotlin:

abstract class BaseActivity<P : BasePresenter<BaseView>> : AppCompatActivity(), BaseView 

abstract class BasePresenter<V : BaseView> 

interface BaseView
Run Code Online (Sandbox Code Playgroud)

当我试图使用时

class MainActivity() : MainView, BaseActivity<MainPresenter>() 
Run Code Online (Sandbox Code Playgroud)

我得到"Type参数不在其范围内.预期:BasePresenter,Found MainPresenter "

generics mvp android kotlin

3
推荐指数
1
解决办法
1061
查看次数

Dagger2,同时为不同的API提供Retrofit实例

在我的项目中,我使用Retrofit并尝试使用Dagger注入依赖项.我还有2个不同API的Retrofit服务.我需要同时使用2个不同的API和不同的baseUrls.我坚持到这里,不知道接下来该做什么.

我的ApplicationModule:

@Module
public class ApplicationModule {

private String FIRST_API_URL = "https://first-api.com";
private String SECOND_API_URL = "https://second-api.com";

private String mBaseUrl;
private Context mContext;

public ApplicationModule(Context context) {
    mContext = context;
}

@Singleton
@Provides
GsonConverterFactory provideGsonConverterFactory() {
    return GsonConverterFactory.create();
}

@Singleton
@Provides
@Named("ok-1")
OkHttpClient provideOkHttpClient1() {
    return new OkHttpClient.Builder()
            .connectTimeout(20, TimeUnit.SECONDS)
            .readTimeout(20, TimeUnit.SECONDS)
            .build();
}

@Singleton
@Provides
@Named("ok-2")
OkHttpClient provideOkHttpClient2() {
    return new OkHttpClient.Builder()
            .connectTimeout(60, TimeUnit.SECONDS)
            .readTimeout(60, TimeUnit.SECONDS)
            .build();
}

@Singleton
@Provides
RxJavaCallAdapterFactory provideRxJavaCallAdapterFactory() {
    return RxJavaCallAdapterFactory.create();
}

@Singleton
@Provides
@FirstApi …
Run Code Online (Sandbox Code Playgroud)

mvp android retrofit dagger-2

3
推荐指数
1
解决办法
2022
查看次数