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. ~~与Math.floor之间的区别()
- 3. “或”与“||”之间的区别?
- 4. 时间()与stime()之间的区别
- 5. OCaml类型铸造之间的区别
- 6. 铸造类型之间的区别
- 7. javascript构造函数之间的区别
- 8. PAM与Metis分区之间的区别
- 9. 与别名之间的区别
- 10. 构造函数和new/malloc之间的区别,析构函数与delete/free之间的区别
- 11. 关注与责任之间的区别(即SRP和SoC之间的区别)?
- 12. 锚链接和window.location之间的区别?
- 13. Skript和控制台之间的区别
- 14. 十进制和decimal.value之间的区别?
- 15. WS安全机制之间的区别
- 16. 保留和复制之间的区别?
- 17. 并行流与CompletableFuture之间的区别
- 18. Session.Clear()与Session.Contents.Clear()之间的区别
- 19. justify-content与align-content之间的区别
- 20. system.out与system.err之间的区别
- 21. Ember:unloadRecord与新记录之间的区别
- 22. CommonsHTTPTransportSender与org.apache.synapse.transport.passthru.PassThroughHttpSSLSender之间的区别
- 23. on('click')与('tapone')之间的区别
- 24. iOS中1000与1000.0之间的区别
- 25. 相对与绝对之间的区别
- 26. 长与长之间的区别?
- 27. SBT编译与compileIncremental之间的区别
- 28. mysqlnd_qc与SELECT之间的区别SQL_CACHE
- 29. 年份与周年之间的区别?
- 30. <%! %>与<% %>之间的区别
我想补充说* Pure Fabrications *的定义**非常有凝聚力**。您创建它们是因为您有责任无法轻松地将其分配给另一个班级(通过*间接*)。拉尔曼提到“正在绝望”:-)所以,通过创建一个新班级来承担这一责任,这个班级将非常有凝聚力,因为它只做一件事。 – Fuhrmanator