2010-11-03 41 views
2

任何人都可以请解释这个例子吗?我自相矛盾设计原理高风扇与高扇出

  • 高风扇在:一个给定的类设计的方式,它的大量的其他类可以很容易地消耗它。
  • 高扇出:一个类应该使用很多其他类。

两者似乎都是自相矛盾的。任何人都可以用一个例子来解释它吗?可能在.NET框架中。

+1

这些术语来自电子产品:Fan-In是芯片具有的*输入*数量,Fan-Out是它可以*驱动*或输出到的设备数量(并行,同时)。例如,一个灯开关可能有一个输入(电源),并且可以驱动许多灯泡(低扇入,高扇出)。对我来说,一个类调用另一个类来从它获得*输入*(我将*称为这个风扇*,但也许我错过了一些东西......),并且在需要输入时被其他类调用。但是一个班级可以打电话给另一个班级,让事情也发生。换句话说,这个比喻是紧张和误导。 – 2016-01-22 17:36:23

回答

7

高风扇对于低等级是很好的规则。他们应该可以高级重用。高级粉丝是高级班的好规则。他们不应该“重新发明轮子”,而是使用现有的代码 - 在低级别课程中找到。

所以规则并不矛盾,因为它们涉及到不同的类。

1

同意@Jeanno。高扇出是不可取的。

“模块的扇出数是来自该模块的调用次数。至少有三项研究得出结论:扇出平方是设计度量的一个组成部分,与缺陷的可能性很好地相关。格雷迪,RB,在电脑 “成功运用软件度量”,第27卷,第9号,pp.18-25,1994年9月 DOI:10.1109/2.312034

1

真真正有问题的情况是,当你同时具有高扇入和高扇出:

  • 低扇入,低扇出:与在任一方向的依赖关系小的模块。都好。
  • 高扇入,低扇出:这是一个高度依赖的模块,但本身并不依赖太多。就像一个低级的实用程序库。
  • 低扇入,高扇出:一个模块,依赖于很多其他模块,但少数,如果有任何模块依赖于它。你真的无法避免让一个顶级模块将整个应用程序连接在一起,而且这个模块自然会依赖于系统中的每一个其他模块。
  • 高扇入,高扇出:一个非常有问题的模块,当它的许多依赖关系中的一个发生变化时就会中断/需要更改,并且依次打破系统中依赖它的许多其他部分。