2009-06-14 165 views
5

可能重複:
How do you know when to use design patterns?設計模式

我如何理解/約需 「時使用何種設計模式」 的決定?

在決定在適當的地方使用適當的設計模式時,要觀察哪些因素?

+3

你讀過這本書嗎?讀了這本書。 – 2009-06-14 01:46:42

+5

我認爲這可能是http://stackoverflow.com/questions/85272/how-do-you-know-when-to-use-design-patterns的副本 – 2009-06-14 01:50:03

+0

謝謝史蒂夫!鏈接確實有幫助。 – 2009-06-14 01:54:03

回答

3

一般來說,如果你做得對,它就有一個模式。你現在可能知道你正在使用它。

如果你做錯了,它有一個反模式。但你絕對是不知道你正在使用它。

0

所有明確定義的模式都有背景,上下文和模式解決的問題。

模式的要點就是告訴你什麼時候合適。

2

你不應該總是開始讓你的軟件適合一種設計模式,但是如果它匹配你使用它的話。在許多情況下,你所做的大多數事情都會有一種設計模式,這種模式僅僅是一種從許多不同的軟件實現中觀察到的模式,這種模式很常見

例如,如果您有一組所有需要同步的類。那麼,這與觀察者或發佈/訂閱模式很好,其中一個類是通知程序,另一個類監聽通知。 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。它應該來自手頭項目的需求。

0

我發現如果我只是黑客程序,很好地使用設計模式幾乎是不可能的,但是,如果你設計你的程序,那麼你可以看看你想要做什麼和設計模式開始出現在你的申請。

例如,如果您看到有一個指導應用程序流的類,那麼Controller模式是有意義的。

使用設計模式的另一種方式是編寫程序,使其工作,然後使用設計模式進行重構。我相信馬丁福勒寫了一本關於這個主題的書,但我對作者並不積極。

無論哪種方式,它都有助於瞭解您想要做什麼來幫助確定哪些模式最適合。