我如何理解/約需 「時使用何種設計模式」 的決定?
在決定在適當的地方使用適當的設計模式時,要觀察哪些因素?
我如何理解/約需 「時使用何種設計模式」 的決定?
在決定在適當的地方使用適當的設計模式時,要觀察哪些因素?
一般來說,如果你做得對,它就有一個模式。你現在可能知道你正在使用它。
如果你做錯了,它有一個反模式。但你絕對是不知道你正在使用它。
Gang of Four (GoF)模式是一個很好的資源。
所有明確定義的模式都有背景,上下文和模式解決的問題。
模式的要點就是告訴你什麼時候合適。
看看這本優秀的書"Emergent Design: The Evolutionary Nature of Professional Software Development"。它向您展示了我們如何最終實現設計模式,並將爲您提供架構代碼的良好指導。
你不應該總是開始讓你的軟件適合一種設計模式,但是如果它匹配你使用它的話。在許多情況下,你所做的大多數事情都會有一種設計模式,這種模式僅僅是一種從許多不同的軟件實現中觀察到的模式,這種模式很常見
例如,如果您有一組所有需要同步的類。那麼,這與觀察者或發佈/訂閱模式很好,其中一個類是通知程序,另一個類監聽通知。 Observer pattern
或者說你想限制遊戲引擎中的內存使用,那麼你可能會創建一個ObjectPool。 Object pool
或者,也許你想簡化一組對象爲simplr API然後使用Facade模式:只使用功能模式,如封裝和繼承Facade pattern
很多時候都是精品。這取決於問題。在大多數情況下,您嘗試編碼的大部分內容都將以模式解決,但模式不是編碼的唯一方式。在許多情況下,你開始設計或有需要,它成爲一種模式。
記住模式起源於觀察許多類型的軟件問題,它不是起點而是軟件體系結構的反映。
Design pattern (computer science)
在dofactory.com的方式很多樣:Design pattern tutorial by dofactory
Python的設計模式:http://video.google.com/videoplay?docid=-3035093035748181693
強制的設計模式就像是迫使OO。它應該來自手頭項目的需求。
我發現如果我只是黑客程序,很好地使用設計模式幾乎是不可能的,但是,如果你設計你的程序,那麼你可以看看你想要做什麼和設計模式開始出現在你的申請。
例如,如果您看到有一個指導應用程序流的類,那麼Controller模式是有意義的。
使用設計模式的另一種方式是編寫程序,使其工作,然後使用設計模式進行重構。我相信馬丁福勒寫了一本關於這個主題的書,但我對作者並不積極。
無論哪種方式,它都有助於瞭解您想要做什麼來幫助確定哪些模式最適合。
你讀過這本書嗎?讀了這本書。 – 2009-06-14 01:46:42
我認爲這可能是http://stackoverflow.com/questions/85272/how-do-you-know-when-to-use-design-patterns的副本 – 2009-06-14 01:50:03
謝謝史蒂夫!鏈接確實有幫助。 – 2009-06-14 01:54:03