2008-09-11 74 views
1

建立由多種不同類型組成的系統模型的常見解決方案是創建一個模塊化系統,其中每個模塊負責特定類型。例如,Wombat WombatModule模塊將包含:IModule,其中IModule接口具有GetCount()(查找若干個Wombats)和Update()(更新所有Wombats狀態)等方法。用於建模的體系結構

更多面向對象的方法是爲每個項目類型添加類併爲每個項目創建一個實例。這將使類Wombat:IItem的方法像Update()(更新這個wombat)。

從代碼的角度來看,差異可以忽略不計,但運行時間有顯着不同。面向模塊的解決方案肯定更快:更少的對象創建,更容易優化所有袋熊通用的操作。

問題出現在類型和模塊數量增長時。要麼你失去了大多數的性能優勢,因爲每個模塊只支持幾個項目,或者模塊的複雜性增長,以適應一種普通類型的稍微不同的項目 - 比如胖胖的瘦子。或兩者。

至少有一次,我看到它降級到糟糕的狀態,當所有WombatModule做的是保持隱藏的Wombat對象的集合並在循環中運行它們的方法。

當性能不如長期開發的問題更少時,您能確定使用模塊而不是每個項目對象的任何體系結構原因嗎?可能還有另一種可能性,我錯過了?

回答

1

我爲embedded software company工作,我們的code base是相當大的。代碼庫設計有執行特定功能和維護某些對象的模塊 - 也有一些對象以獨立對象的形式存在。我們用我們的方法看到的最大問題是區分模塊的邊界。隨着時間的推移,我們的模塊往往會變得不必要地複雜化,並慢慢增長以執行最初超出其邊界的功能。我會說最好的方向是模塊化設計,並實現非常具體的對象,並盡力不讓模塊長得比您想要的大。