oop - 纯造与间接的区别

标签 oop design-patterns grasp

我试图找到教程和好的例子来解释这两者之间的区别,但找不到任何信息。

纯粹的制造和间接作用是为中间对象创建和分配责任,那么有人可以解释这些设计模式之间的区别吗?

谢谢!

最佳答案

如果要在组件之间创建较低的耦合,请使用 Indirection。 Larman 在 Applying UML and Patterns 中建议的示例是 TaxCalculatorAdapter 类。为了使客户端不必知道可能的适配器的内部工作原理,他使用间接方式隐藏它们,只公开所需的 API。此间接将与被适配者高度耦合,但与客户端仅松散耦合。
PersistentStorage来自 Pure Fabrication 确实是一个间接子(Larman 在书中如此指出),因为它提供了较低的耦合。 Pure Fabrication不仅如此,它还创建了不属于域模型的对象。

Larman 给出的例子是一个域类 Sale .自 Sale拥有所有要保存的数据,那么保存销售的逻辑也是一个候选者(信息专家)。但是,持久化逻辑与 Sale 的概念无关,因此类会变得不连贯。此外,通过将销售耦合到特定的数据库 API,您可以限制重用(间接救援)。并且因为保存是一项常规事件,您可能还会在也需要保存的对象中复制代码。为了避免这种情况,你编造了一些东西(纯粹的制造),这意味着你创建了一些不属于域模型的东西(这里:a PersistentStorage),但仍然捕获了应用程序中的基本事件。

因此,纯制造它是一种特化,或者更确切地说是间接的变体。

关于oop - 纯造与间接的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14352106/

相关文章:

design-patterns - GOF 和 GRASP 设计模式有什么区别

php - 是否可以有一个具有私有(private)/ protected 方法的接口(interface)?

php - 在父函数中调用子对象

c# - 最佳外部 REST API 访问模式?

c# - GRASP 的 Controller 到底是什么?

Java 参数传递遵循 GRASP

c++ - 将 "zero"值设置为成员变量

python - 方法解析顺序 (MRO) 如何在此 Python 代码中工作

ios - 如何在iOS中使用委托(delegate)来模拟外部框架的类?

c++ - 通过前向声明隐藏实现