问题标签 [presenter-first]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
417 浏览

c# - 半复杂页面上的 MVP

我正在开发行为稍微复杂的 .NET 3.5 表单应用程序。是用来存书的。为了给您一个想法,工作流程将是:

  • 用户输入 ISBN 代码
  • 如果ISBN有效,检查是否存在,
  • 如果有效且存在,则显示图书详细信息并启用保存按钮,如果不是,则显示“添加图书”按钮,
  • 如果它无效,则显示错误,
  • 最终,用户将单击“保存”,因此必须保存条目。

这是四个责任:

  • 验证 ISBN,
  • 检查书的存在,
  • 显示图书详情,
  • 保存新书详细信息。

我的问题是:我应该将应用程序逻辑保留在一个 MVP 结构中,还是应该将其拆分为四个 MVP 结构,每个职责一个?

将其保持在一个 MVP 结构中

  • 使模型更复杂
  • 使测试设置更加复杂(每个测试都有很多设置代码来选择正确的验证器、退回的书等,即使它们没有被使用),
  • 使表示逻辑更容易遵循

将其保存在单独的 MVP 结构中将

  • 使模型更简单,
  • 为每个演示者创建更多但更简单的测试,
  • 在演示者之间的交互中增加复杂性(我如何向演示者表明 ISBN 有效,以便显示图书详细信息?)

我正在尝试演示者第一原则,所以: - 保持视图不变(所以没有像“演示者验证 ISBN”这样的事件), - 保持演示者无状态, - 保持模型简单(足够)

任何人都知道最好的方法是什么?

0 投票
1 回答
619 浏览

design-patterns - 在 Presenter First 中,为什么接口上的 SubscribeSomeEvent 方法比普通的旧事件更受欢迎?

我最近发现了Presenter First并阅读了他们的白皮书和博客等。

在我发现的大多数示例中,事件并没有直接在接口上声明,而是作为它的一种方法。例如,

我不明白为什么。我以为我在某处看到了一篇论文/文章/博客,解释了这背后的原因,但我再也找不到了。所述文本还包含单元测试代码片段——我知道这一点是因为我记得对自己说,其中一个单元测试是不正确的。

更新:

下面是一个比较的例子:

订阅方式:

与事件:

仅供参考,上面的事件样式将无法正常工作,因为 ApplicationPresenter 会立即被垃圾收集并且连线永远不会发生。

0 投票
1 回答
633 浏览

wpf - WPF:不从 App.xaml 引用 Shell 时访问应用程序资源

我是WPF的初学者。我的 App.xaml 如下所示

应用程序.xaml

我没有设置 startupuri,因为我想以演示者为先。我在 app.xaml.cs 中执行以下操作

我有一个名为“SearchBar.xaml”的用户控件,它引用“lightBlueBrush”作为静态资源。

当我尝试在设计器中打开“Shell.xaml”时,它告诉我:“shell.xaml”无法在设计时加载,因为它说它无法创建“SearchBar.xaml”类型的实例。

当我使用另一个 Visual Studio 实例调试 devenv.exe 时,它​​告诉我它无权访问我在 app.resources 中创建的画笔。

如果一个人正在做一个演示者优先的方法,一个人如何访问资源?

当startupURI 是“Shell.xaml”并且启动事件不存在时,我有这个工作。

任何线索/想法/建议。我只是想理解。

当我运行应用程序时,一切都按预期工作,而不是@设计时。

0 投票
3 回答
1415 浏览

java - 为 Presenter 类编写 Mockito 测试(Presenter First Pattern)

我正在尝试熟悉 TDD 和 Presenter First Pattern。现在我一直在为我的 Presenter.class 编写一个测试用例。我的目标是涵盖整个 Presenter.class,包括动作事件,但我不知道如何使用 Mockito 来完成。

Presenter.class:

IView.class:

模型类:

PresenterTest.class:

提前致谢!

0 投票
2 回答
1259 浏览

c# - 订阅/取消订阅(添加/删除)扩展方法中的事件

我想创建一个流畅的扩展方法来订阅(不太重要的是取消订阅)一个事件。那是使用.RespondBy(Method)代替 a的扩展+= new Eventhandler(Method)

我想做这个:object.WhenSomethingChanges.RespondBy(DoingThisOtherThing);

而不是这个:object.WhenSomethingChanges += new EventHandler(DoingThisOtherThing);

我做了一堆谷歌搜索,虽然我没有完全掌握错综复杂的细节,但我现在明白这与你是访问本地领域还是公共活动有关。

话虽如此,我只是对“如何”做到这一点感兴趣,而不关心“为什么”我的第一次尝试没有奏效。解决方法失败,至少是一个明确的“你不能这样做......永远。 ”也将是有用的信息......

通信状态演示者(图片)

尝试使用的图像,无法编译

CommuncationsStatusPresenter(代码)

响应者

通用事件处理程序

通信模型

ICommunicationsView

0 投票
1 回答
94 浏览

python - 具有多个断言的演示者优先单元测试

我正在尝试将 Presenter-First 方法用于一个新项目。我发现自己在下面的单元测试中。我是否通过在此测试中包含如此多的断言来利用糟糕的单元测试实践?如果是,是我的测试方法或presenter.setOverview 的实施有问题吗?换句话说,setOverview 方法是否应该调用 self.setSalesQty 而不是 self.view.setSalesQty?在这种情况下,我将对presenter.setSalesQty 进行单独的测试,而testSetOverview 测试将不再需要担心对此进行测试。