2010-11-18 36 views
1

假設:你的DRY感覺是可靠的。代碼中的重複行爲反映給你;它是黑板上的釘子。DRY會不會讓你走上OOP設計模式正義的道路?

問題:將DRY保持在您心目中的最前沿可以保證您在注意何時應該尋找設計模式?

從我看過的設計模式的介紹看來,似乎已經在解決所謂的「需要」重複代碼。這是一個面向對象的真相嗎?

可能更容易的問題:有沒有什麼時候乾燥會導致你遠離OOP設計模式?

回答

4

恕我直言,這取決於具體模式。如果你有GoF模式,那麼他們的目標就是「分離關注點」。通過分析對象創建(工廠模式)或對象克隆(原型模式)這樣的特定問題,您可以將處理此問題的那部分代碼引入中心位置,從而使代碼更加乾爽。

其他類似Flyweight或Proxy的GoF模式具有不同的性質,它們旨在提高效率或降低複雜性。這些模式大多與DRY原理正交。

+0

謝謝,這說明了一個似乎難以問的問題。簡單來說,DRY將帶領一個朝向GoF模式,但只是其中的一部分。 – MushinNoShin 2010-11-18 19:54:48

4

DRY和OOP是正交的。無論是否使用面嚮對象語言進行編碼,都應實行DRY。請記住,DRY不僅適用於代碼。

+0

我沒有看到DRY和OOP(特別是設計模式)是如何正交的。也許我應該將其標記爲設計模式。也許甚至用另一種方式來表達這個問題是:「所有的設計模式都可以簡化爲避開正確的重複代碼的方法」 – MushinNoShin 2010-11-18 17:56:44

+0

@MushinNoShin:正如我所解釋的,DRY是一個原則,不管是否編碼一種OO語言,而且它不僅適用於代碼(它適用於數據庫模式,文檔,構建系統等)。 – jason 2010-11-18 18:02:37

+0

正確,但是否定條款暗示我可以適用於OOP編碼。所以,似乎原來的問題依然存在。在這個特定的背景下,我在OO的保護下詢問DRY,並對它如何與設計模式進行交互感興趣。 – MushinNoShin 2010-11-18 18:06:15

0

爲什麼思考DRY會讓你遠離OOP設計模式。設計模式在那裏,以便您不會重複其他人多次犯的錯誤,並針對特定問題提出解決方案。所以,沒有DRY不會讓你遠離OOP設計模式。

3

正如其他人注意到的,DRY和OOP是正交的概念。 DRY不會導致您遠離OOP設計模式的最終證明是您可以在使用其中包含(某些)OOP設計模式的語言時應用DRY。