gpt4 book ai didi

design-patterns - 被动 View 模式 : Communication Among Components

转载 作者:行者123 更新时间:2023-12-04 07:05:28 24 4
gpt4 key购买 nike

我将每个 MVP 三元组视为一个独立的组件。例如,View 实现了 IView 接口(interface),Presenter 当然只能通过 IView 知道 View。

我可以使组件尽可能可重用。现在我必须组合这些 MVP 组件来形成一个应用程序。我想知道将这些组件尽可能分开的最佳做法是什么。但我当然需要让他们相互交流/使用react。

我可以只让 IView 暴露给其他人的 Presenter 吗?或者我应该让演示者在不知道底层 View 的情况下相互交流吗?

谢谢

最佳答案

在 MVP 中,我将演示者视为事件的协调者。因此,它们是构建应用程序的自然选择。

将演示者的 View 暴露给其他演示者打破了 MVP 模式中的封装思想。虽然它不会降低暴露其 View 的组件的可重用性,但它确实会降低使用另一个组件 View 的组件的可重用性,因为它增加了组件的依赖性。

所以我会将 View 对演示者保密,只让演示者相互交流。


阐述回应评论

当我说对演示者保持 View 私有(private)时,我的意思是私有(private)的:除非通过演示者的调解,否则不会暴露给外界。当然,演示者可以向外界公开方法,这将导致它操纵其 View 。如果演示者通过界面执行此操作,它实际上可能使用自己的 View 作为界面实现的委托(delegate),但是 - 与您的提议相反 - 演示者将内容委托(delegate)给 View 而不是相反。

这样做可以确保,或者至少使所有交互逻辑更有可能保留在演示者中,并且不会在演示者和 View 中乱七八糟。

View 只能由它的展示者操作。当然,现在您可以在多个演示者中重用 View ,但是 View 的实例只能由实例化它的演示者来操作。如果您直接公开它(甚至通过整个或部分界面),您将开始不得不处理一个可以由多个演示者操作的 View ,并且不再有任何一个演示者控制该 View 。

我在 View 中拥有的唯一代码是通知其演示者用户所做的事情(在某些 MVP 讨论中也称为用户手势)。由演示者决定如何处理它。我还保留了有关启用/禁用哪些控件以响应用户在演示者中而不是在 View 中的选择的所有逻辑。这不仅将所有交互逻辑保留在演示者中,而且有助于创建可单元测试的用户界面(表单)。

关于design-patterns - 被动 View 模式 : Communication Among Components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com