Network theory and MVC

3
我设计了一个MVC,不允许视图(表单)之间进行通信。如果一个表单需要与另一个表单通信,则在控制器上引发一个事件,其他表单可以订阅该事件。一般的思路是尽量减少通信路径,帮助降低复杂性。每个视图都与RootController通信,它是一个单例,或者是一个子控制器,视图通过RootController访问它。同样,它将通信路径保持在最低限度,因为所有内容都通过RootController进行。
这是否遵循一般的网络理论,即添加更多节点到网络中,它就变得越来越复杂。"而且",每个节点直接进行通信,就会引入更多的复杂性到网络中。有人能指出这个领域/理论具体称为什么吗?参考资料?
我在MVC中所做的是否类似于让网络中的所有节点通过一个中心节点相互通信?
5个回答

4

我认为你可能需要查阅图论(这是网络拓扑的基础)。

而且,你的解决方案听起来类似于在网络中让所有东西都通过一个中心节点进行通信。这是简单性的好模式(每个新节点只需要一个连接就可以连接到所有东西),但对于可扩展性来说不太好,因为你会达到一个点,在这个点上,RootController正在处理的工作量非常大。每个新节点都会让你越来越接近在中心节点处出现主要性能瓶颈的地步。


3
实际上,这听起来像是中介者模式...所有通信都通过一个中心枢纽进行...

1

1

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

对于轮毂和辐条,你需要考虑n-1条边和O(n)的复杂度。

然而,在我工作过的许多Rails应用程序中,允许视图调用其他视图从未(我能回忆起来的)引起过太多问题……如果没有它,整个“部分”事情实际上会非常困难。


0

我不确定网络/图论在这里是否真的有帮助。所有“路径”的长度都为1。显而易见的是,您拥有的表单越多以及这些表单彼此交互越多,您的应用程序就会越复杂。如果您想对应用程序建模,我认为您最好参考message passing而不是图论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接