2010-11-03 47 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

真真正有問題的情況是,當你同時具有高扇入和高扇出:

  • 低扇入,低扇出:與在任一方向的依賴關係小的模塊。都好。
  • 高扇入,低扇出:這是一個高度依賴的模塊,但本身並不依賴太多。就像一個低級的實用程序庫。
  • 低扇入,高扇出:一個模塊,依賴於很多其他模塊,但少數,如果有任何模塊依賴於它。你真的無法避免讓一個頂級模塊將整個應用程序連接在一起,而且這個模塊自然會依賴於系統中的每一個其他模塊。
  • 高扇入,高扇出:一個非常有問題的模塊,當它的許多依賴關係中的一個發生變化時就會中斷/需要更改,並且依次打破系統中依賴它的許多其他部分。