2010-02-18 90 views
2

很簡單,將應用程序的各個部分分組到適當的模塊當然是非常有意義的。跨模塊通信

通常,保持這些模塊解耦是不是一個問題,但它往往棱從所述用戶管理模塊的數據被其它部件所需要的。

它是由這些客戶端模塊會對用戶模塊的內部類等,這是我帶來的這種跨模塊的通信是如何最好的架構問題的知識正常原則理想大幅減少。

我的想法迄今是一個模塊可以有一個常規命名的API類通過哪些其他模塊就可以「查詢」模塊。這種方法仍然會導致一定的依賴性,但至少只能在其他模塊/ API上使用。

您對這個想法將受到極大的歡迎。

由於提前, 詹姆斯

回答

0

嘛,「模塊」是非常模糊的 - 正是定義模塊可以相差很大,從系統到系統中。

我實際上正是你試圖避免什麼類型的場景迷惑。兩個班級或一組班與另一個班級進行交流並不罕見。這就是爲什麼我們首先有類似界面的東西。

我想在你的情況下,你可以有一個控制器類的類(如MVC中的C)在你的模塊會知道每個膽量,可作爲一個溝通的橋樑之間。

+0

對不起,含糊不清! 這實際上是關於MVC模式的簡單實現,並且模塊封裝(通過物理目錄)其必要的MV和C組件。 然後,我的問題在其基本的形式中基本上是如何模塊X中的控制器可以與模塊Y中的模型進行通信? – jstephenson 2010-02-18 17:37:49

+0

在這種情況下,我會讓X中的模型自己從Y加載模型。控制器不需要管理該通信。 – 2010-02-18 18:51:51

+0

而在保持模塊互相分離的前提下,夏天的建議對我來說似乎是明智的。我認爲這兩者的結合將會很好。你會同意嗎? – jstephenson 2010-02-19 19:38:24

2

您可以將用戶模塊稱爲「庫」。術語的這種變化可以幫助我們弄清楚哪些模塊應該是頂層的,哪些模塊管理着旨在被多個其他模塊使用的底層活動。 CodeIgniter PHP framework使用這種方法。

0

您可能想要閱讀「依賴注入」。 Symfony Components爲依賴注入提供了一個解決方案,並且在這個主題上有很多很好的閱讀/例子。

+0

感謝您的輸入。我已經簡要地考慮了一些基於DI容器的解決方案,但爲了正確地做到這一點,它需要數據映射器控制器X依賴於符合某種類型可觸摸的接口,並且接下來是接口應該在應用程序內部生存的問題/模塊生態系統(希望這是有道理的......)? – jstephenson 2010-02-18 18:38:11