11
A
回答
15
如果要在組件之間創建較低的耦合,請使用間接。 Larman在應用UML和模式中提出的示例是一個TaxCalculatorAdapter類。爲了防止客戶端知道可能的適配器的內部工作,他將它們隱藏起來,只顯示所需的API。這種間接性將與適應者高度耦合,但只與客戶鬆散耦合。
的PersistentStorage
從純虛構確實是一個Indirecton(Larman與狀態,以便在這本書),它提供了較低的耦合。 Pure Fabrication
超出了這一點,但它創建的對象不屬於您的域模型。
Larman給出的示例是一個域類Sale
。由於Sale
具有所有要保存的數據,因此它將成爲保存銷售邏輯的候選人(信息專家)。然而,持久性邏輯與Sale的概念無關,因此這個階級會變得不協調。另外,通過將Sale與特定的DB API結合使用,您可以限制重用(Indirection以拯救)。而且,由於保存是一項普遍的活動,因此您可能還會在需要保存的對象中複製代碼。爲了避免這種情況,你創建了一些東西(純粹的製造),這意味着你創建了一些不屬於Domain模型的部分(這裏:PersistentStorage
),但仍然捕獲應用程序中的基本活動。
因此,Pure Fabrication是一種專業化,或者說是Indirection的變體。
相關問題
- 1. 構建和製造之間的區別?
- 2. 「或」與「||」之間的區別?
- 3. ~~與Math.floor之間的區別()
- 4. 時間()與stime()之間的區別
- 5. OCaml類型鑄造之間的區別
- 6. javascript構造函數之間的區別
- 7. 鑄造類型之間的區別
- 8. PAM與Metis分區之間的區別
- 9. 與別名之間的區別
- 10. 構造函數和new/malloc之間的區別,析構函數與delete/free之間的區別
- 11. 關注與責任之間的區別(即SRP和SoC之間的區別)?
- 12. 錨鏈接和window.location之間的區別?
- 13. WS安全機制之間的區別
- 14. Skript和控制檯之間的區別
- 15. 十進制和decimal.value之間的區別?
- 16. 保留和複製之間的區別?
- 17. 命令與ScriptBlock之間的區別Powershell
- 18. justify-content與align-content之間的區別
- 19. 層次與層次之間的區別
- 20. javax.servlet-api.jar與servlet-api.jar之間的區別
- 21. Python:time.time()與time.clock()之間的顯着區別?
- 22. add_filter與add_action之間的區別
- 23. 並行流與CompletableFuture之間的區別
- 24. Clojure中-toString與.toString之間的區別
- 25. express.response.status()與response.sendStatus()之間的區別
- 26. 值與綁定之間的區別
- 27. 繼承ApiController與IHttpController之間的區別
- 28. StratifiedKFold與train_test_split分層之間的區別
- 29. 會員與物業之間的區別?
- 30. ER圖與EER圖之間的區別
我想補充說* Pure Fabrications *的定義**非常有凝聚力**。您創建它們是因爲您有責任無法輕鬆地將其分配給另一個班級(通過*間接*)。拉爾曼提到「正在絕望」:-)所以,通過創建一個新班級來承擔這一責任,這個班級將非常有凝聚力,因爲它只做一件事。 – Fuhrmanator