Tag: mvp

GWT – MVP事件总线。 多个处理程序被创建

我正在使用我inheritance的大型应用程序,并遇到了一些最佳实践问题。 每次用户导航到“我们的客户编辑”页面时,都会创建一个新的演示者,并设置一个视图。 有一个主要的客户编辑演示者和一个主视图。 主视图中还有子视图,主演示者的子演示者使用它们。 在子演示者中,我在事件总线上注册事件处理程序。 我遇到的问题是,当第二次导航到联系人编辑器时,会再次创建演示者,并再次注册这些事件。 现在,当一个事件发生时,它会被处理两次,每个presenter实例一次。 演示者不会被变量保留,但子视图由主视图引用。 可能是视图中的此引用是否阻止事件处理程序被删除? 我的印象是,如果该对象被垃圾收集,将删除事件处理程序。 如果不是这种情况,我应该从事件总线取消注册这些事件处理程序吗? 更新:演示者没有被垃圾收集。 如果我可以修改代码以在不再需要这些演示者时删除对这些演示者的所有引用,那么它们是否会被收集,因此将删除事件处理程序?

MVP和GWT小部件之间的通信

如果我在GWT中使用MVP模式,就像在GWT架构中从2009年的Google I / O谈论最佳实践,但是将信息分散到多个小部件中,应该如何填充值对象? 假设我有一个EditPersonView / Presenter,一个EditPetView / Presenter和一个EditAddressView / Presenter,后两个是小部件,作为EditPersonView中面板的一部分。 有了这些,我有以下课程: class PersonDetails { private PetDetails pet; private AddressDetails addressDetails; // … } PetDetails和AddressDetails实例变量在其演示者对应物中进行管理。 当用户单击EditPersonView中的“保存”按钮时,如何完成窗口小部件之间的通信,以便PersonDetails充满来自其子窗口小部件的信息?

关于GWT内MVP的问题。 (总体概述)

关于在GWT应用程序中的使用,你们中的任何人都可以对MVP模式做出很好的解释。 我看过的任何一个例子,我发现很难理解实现模式的概念。 这样的问题是什么? 它实现了什么,如何实现以及如何扩展以便将来进行修改?

如何将MVP模式应用于android项目

抱歉我的英语语法。 我的问题有点愚蠢,但我想清楚地了解MVP模式在实际应用中的应用方式。 我正在开发一个android项目。 我想将MVP模式应用于我的项目。 我参考这个演示: https://github.com/antoniolg/androidmvp 我对这种模式感到非常兴奋。 但是在这个演示项目中,我看到了每个活动(一个视图),我们总是有一个演示者和一个交互者(模型)和其他东西。 所以在有很多屏幕的项目中: 我该如何管理演示者和模型。 对于每个活动(示例LoginActivity),我创建一个“登录”包并将所有演示者和模型放入其中。 可以吗? 有人可以使用MVP模式给我一个小的应用程序源代码。 (不是演示项目)。

GWT Editors框架 – ListEditor,删除项目,MVP违规

public class PersonListEditor extends Composite implements IsEditor<ListEditor> { private static PersonListEditorUiBinder uiBinder = GWT.create(PersonListEditorUiBinder.class); interface PersonListEditorUiBinder extends UiBinder {} private class Source extends EditorSource { @Override public PersonListItemWidget create(int index) { PersonListItemWidget widget = new PersonListItemWidget(); panel.insert(widget, index); return widget; } } @UiField VerticalPanel panel; private ListEditor editor = ListEditor.of(new Source()); public PersonListEditor() { initWidget(uiBinder.createAndBindUi(this)); […]

MVP到MVVM Android

来自这里的一个人告诉我,MVVM比MVP更好,他告诉我许多专业人士和许多conts,但我想知道我的MVP是否做得好还是你知道其他任何方式可能转换为MVVM。 这是使用Google MVP登录的。 我不会把所有的代码,但我会把文件夹和一些解释: -模型 用户(简单用户pojo类) -主持人 我有一个IGoogleLoginView的对象,我调用这些方法,但这里我有逻辑createGoogleClient() , signIn() , onActivityResult() , onStop() , onStart() , onDestroy()所有这些方法都来自我的interface在同一个包里面IGoogleSignIn IGoogleSignIn – Presenter类中的所有方法 -视图 googleSignIn() goToMainActivity() 然后我有我的MainActivity,我称之为方法… 我想知道在MVVM上做到这一点会有多么不同,做什么会有什么变化,还有什么东西不在好的地方?

带有MVP的Dagger 2,避免在视图重新创建时创建额外的主持人对象

我有一个应用程序实现MVP模式与一个Loader来维护视图娱乐的presenter对象(这里有一篇关于此的文章)。 我是Dagger 2的新手,试图与当前代码一起实现它。 我已经设法让它工作,但现在我的演示者创建了两次。 起初它是使用在onCreateLoader中初始化的工厂类创建的,但是当添加Dagger 2实现时,我创建了两个对象(在工厂类和注入时)。 现在我避免在onCreateLoader创建一个新的演示者,而是传递注入的演示者。 问题在于视图重新创建:每次销毁和重新创建视图时,都会在OnCreate / OnCreateView注入一个新的演示者。 这是场景: 注入一个新的演示者: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { … getControllerComponent().inject(this); … } 初始化Loader ,如果Loader不存在,则调用onCreateLoader 。 请注意,我们传递了注入的演示者: @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getLoaderManager().initLoader(PRESENTER_LOADER_ID, null, this); } @Override public Loader onCreateLoader(int id, Bundle args) { switch (id) { case PRESENTER_LOADER_ID: return […]

将MVP模式应用于JDialogs

我正在编写一个Swing应用程序,并且在我之前的问题中 ,已经决定使用Model-View-Presenter模式将用户界面与业务逻辑分开。 当我的应用程序启动时,它执行以下代码: Model model = new BasicModel(); Presenter presenter = new Presenter(model); View view = new SwingView(presenter); presenter.setView(view); presenter.init(); 这会创建用户界面。 事件由View生成,并委派给Presenter 。 然后, Presenter操纵Model并相应地更新View 。 为了处理某些事件,我需要从用户那里获得更多信息。 在这些事件的情况下,我认为Swing视图适合生成一个新的JDialog窗口。 一种思路让我觉得这可能是orignal Presenter中的合适代码: public void handlePreferences() { Preferences prefs = view.getPreferences(); model.setPreferences(prefs); } 也就是说,每个JDialog的内容应该表示一个独特的对象,应该从View检索并在Model更新。 但是,这就留下了一个问题:我是否创建了一个新Model来表示Preferences对象,以及一个新的Presenter来表示该JDialog事件处理? 在我看来,如果我想更改UI以使用JSF,那么在原始View中创建一个新的Presenter和Model迫使我做很多工作,如果我想更改UI以使用JSF。 请随时添加评论以便澄清。

用于Java GUI应用程序的MVC / MVP / MVVM框架

任何人都可以推荐一个(最好是开源的)框架,用于在Java桌面应用程序中将GUI与模型分离吗?

Model-View-Presenter被动视图:bootstraping – 谁最初显示视图?

在Passive View Model View Presenter模式中,谁负责显示视图? 我找到了其他MVP版本的相关答案,但它们似乎不适用于被动视图版本。 我有一个使用Java Swing的具体示例。 它非常简单,但基本上我们有一个SwingCustomersView ,它在内部构建一个带有表(客户列表)的JPanel和一个显示当前所选客户年龄的标签。 在表格中选择客户后,演示者将从模型中检索选定的客户年龄。 我认为这个例子是MVP被动视图的正确实现,但如果我错了,请纠正我。 问题是我们如何引导这些类? 例如,如果我们想在JFrame中显示SwingCustomersView 。 怎么会那样做? 我想象的是: void launcher() { CustomersModel model = new CustomersModel(); SwingCustomersView view = new SwingCustomersView(); CustomersPresenter presenter = new CustomersPresenter(view, model); } 这是初始接线,但尚未显示任何内容。 我们如何实际显示视图? (1) launcher() ,(2) SwingCustomersView或(3) CustomersPresenter是否有责任显示视图? 不幸的是,我不相信这些都是非常好的,你可以从下面的想法中看到。 也许还有另一种方式? (1.a):发射器 使SwingCustomersView扩展JFrame并使其将内部JPanel添加到其自身的内容窗格中。 然后我们可以这样做: void launcher() { CustomersModel model = […]