2013-01-16 37 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