2013-01-16 12 views
11

我試圖找到教程和很好的例子來解釋這兩者之間的差異,但是無法找到任何信息。純製造與間接之間的區別

純粹的製造和間接行爲創建和分配中間對象的責任,所以任何人都可以解釋這些設計模式之間有什麼區別?

謝謝!

回答

15

如果要在組件之間創建較低的耦合,請使用間接。 Larman在應用UML和模式中提出的示例是一個TaxCalculatorAdapter類。爲了防止客戶端知道可能的適配器的內部工作,他將它們隱藏起來,只顯示所需的API。這種間接性將與適應者高度耦合,但只與客戶鬆散耦合。

PersistentStorage從純虛構確實是一個Indirecton(Larman與狀態,以便在這本書),它提供了較低的耦合。 Pure Fabrication超出了這一點,但它創建的對象不屬於您的域模型。

Larman給出的示例是一個域類Sale。由於Sale具有所有要保存的數據,因此它將成爲保存銷售邏輯的候選人(信息專家)。然而,持久性邏輯與Sale的概念無關,因此這個階級會變得不協調。另外,通過將Sale與特定的DB API結合使用,您可以限制重用(Indirection以拯救)。而且,由於保存是一項普遍的活動,因此您可能還會在需要保存的對象中複製代碼。爲了避免這種情況,你創建了一些東西(純粹的製造),這意味着你創建了一些不屬於Domain模型的部分(這裏:PersistentStorage),但仍然捕獲應用程序中的基本活動。

因此,Pure Fabrication是一種專業化,或者說是Indirection的變體。

+1

我想補充說* Pure Fabrications *的定義**非常有凝聚力**。您創建它們是因爲您有責任無法輕鬆地將其分配給另一個班級(通過*間接*)。拉爾曼提到「正在絕望」:-)所以,通過創建一個新班級來承擔這一責任,這個班級將非常有凝聚力,因爲它只做一件事。 – Fuhrmanator