3

我设计了一个不允许视图(表单)之间通信的 MVC。如果一个表单需要与另一个表单通信,它会在控制器上引发一个事件,其他表单可以订阅该事件。总体思路是将通信路径保持在最低限度,有助于降低复杂性。每个 View 都与 RootController 通信,RootController 是一个单例,或者是一个子控制器,View 通过 RootController 访问它。同样,它使通信路径保持向下,因为一切都通过 RootController。

这是否遵循一般网络理论,其中添加到网络的节点越多,网络就越复杂。“并且”,这些节点中的每一个直接通信越多,引入网络的复杂性就越大。谁能指出这个领域/理论到底叫什么?参考?

我对 MVC 所做的事情是否类似于让网络上的所有节点都通过一个中央节点相互通信?

4

5 回答 5

4

我认为您可能想查找图论(这是网络拓扑的基础)。

而且您的解决方案听起来确实类似于让一切都通过网络中的中央节点进行通信。这是一个简单的好模式(每个新节点只需要一个连接来连接到所有东西)但不利于可伸缩性,因为您将达到 RootController 正在做的工作量巨大的地步。每个新节点都会让您更接近中心节点的主要性能瓶颈。

于 2009-01-19T15:39:41.297 回答
3

实际上,这听起来像是中介模式……所有的通信都是通过一个中央集线器发生的……

于 2009-01-19T15:38:19.927 回答
1

听起来像一个基本的观察者模式

于 2009-01-19T15:35:00.387 回答
1

好吧,如果你有一个完整的图(其中一个给定的节点直接连接到每个其他节点),那么它将是 n(n-1)/2 条边和 O(n^2)...这就是你重新寻找?

对于轮辐式,您正在查看 n-1 条边和 O(n) 复杂度。

然而,在我从事的许多 Rails 应用程序中,允许视图调用其他视图从来没有(我记得)引起很多问题......如果没有它,实际上很难处理整个“部分”事情。

于 2009-01-19T16:45:00.120 回答
0

我不确定网络/图论在这里是否真的有用。所有“路径”的长度都是 1。显然,您拥有的表单越多以及这些表单之间的交互越多,您的应用程序就越复杂。如果您正在为您的应用程序建模,我认为您最好查看消息传递,而不是图论。

于 2009-01-19T15:43:40.993 回答