问题 纯制造与间接的区别


我试图找到教程和很好的例子来解释这两者之间的差异,但却无法找到任何信息。

纯粹的制作和间接行为可以创造和分配中间对象的责任,所以任何人都可以解释这些设计模式之间的区别吗?

谢谢!


5406
2018-01-16 05:48


起源



答案:


你用 间接 如果要在组件之间创建较低的耦合。 Larman在应用UML和Patterns中建议的示例是TaxCalculatorAdapter类。为了保护客户端不必知道可能的适配器的内部工作,他用间接隐藏它们,只暴露所需的API。这个间接将与适应者高度耦合,但只与客户松散耦合。

PersistentStorage  来自Pure Fabrication 确实是一个 Indirecton (Larman在书中说明了这一点)因为它提供了较低的耦合。 Pure Fabrication 除此之外,它创建的对象不属于您的域模型。

Larman给出的示例是域类 Sale。以来 Sale 拥有要保存的所有数据,它也可以作为保存销售的逻辑(信息专家)。但是,持久性逻辑与销售的概念无关,因此该类将变得不连贯。此外,通过将Sale与特定的DB API耦合,您可以限制重用(间接到救援)。而且由于保存是一般活动,您可能还会在需要保存的对象中复制代码。为了避免这种情况,你做了一些事情(纯粹的制作),意味着你创造了一些不属于领域模型的东西(这里:a PersistentStorage),但仍然捕获您的应用程序中的基本活动。

因此,Pure Fabrication它是间接的专业化或变体。


15
2018-03-06 13:36



我补充一点 纯粹的制作 根据定义是 非常有凝聚力。您创建它们是因为您有责任无法轻松分配(通过 间接)到另一个班级。 Larman提到“绝望”:-)所以,通过创建一个新的类来承担这一责任,该类将非常有凝聚力,因为它只做一件事。 - Fuhrmanator


答案:


你用 间接 如果要在组件之间创建较低的耦合。 Larman在应用UML和Patterns中建议的示例是TaxCalculatorAdapter类。为了保护客户端不必知道可能的适配器的内部工作,他用间接隐藏它们,只暴露所需的API。这个间接将与适应者高度耦合,但只与客户松散耦合。

PersistentStorage  来自Pure Fabrication 确实是一个 Indirecton (Larman在书中说明了这一点)因为它提供了较低的耦合。 Pure Fabrication 除此之外,它创建的对象不属于您的域模型。

Larman给出的示例是域类 Sale。以来 Sale 拥有要保存的所有数据,它也可以作为保存销售的逻辑(信息专家)。但是,持久性逻辑与销售的概念无关,因此该类将变得不连贯。此外,通过将Sale与特定的DB API耦合,您可以限制重用(间接到救援)。而且由于保存是一般活动,您可能还会在需要保存的对象中复制代码。为了避免这种情况,你做了一些事情(纯粹的制作),意味着你创造了一些不属于领域模型的东西(这里:a PersistentStorage),但仍然捕获您的应用程序中的基本活动。

因此,Pure Fabrication它是间接的专业化或变体。


15
2018-03-06 13:36



我补充一点 纯粹的制作 根据定义是 非常有凝聚力。您创建它们是因为您有责任无法轻松分配(通过 间接)到另一个班级。 Larman提到“绝望”:-)所以,通过创建一个新的类来承担这一责任,该类将非常有凝聚力,因为它只做一件事。 - Fuhrmanator