2014-07-02 29 views
1

我的同事今天問我這個問題,我不能真正給他簡短的答案,沒有使用的例子...編程中的設計模式是什麼 - 簡單,一句話解釋?

因此,讓我問你們這個問題「什麼是設計模式」,並試圖給出簡短的答案是最容易理解的

+3

SO不是字典。網上有幾十種,也許有數百種的定義和解釋;你一定是自己找了答案,並且至少閱讀了其中的一些 - 你不明白什麼? _That_對SO來說是一個合理的問題,但不是這個IMO – Clive

+0

粗略的互聯網搜索似乎是一個開始的好地方... http://en.wikipedia.org/wiki/Design_pattern – David

+5

我個人喜歡這個問題。 SO是專業人士和充滿激情的人們的地方 - 那些通過心臟和實踐瞭解編程模式的人。學習時要問什麼好?還是更多:在學習如何教學時? – hauron

回答

2

設計模式是不同的方法或工具或指南來解決軟件設計問題。掌握它們,可以幫助你

  1. 確定的問題或需求的模式
  2. 提出一個或多個解決方案,解決這個問題,評估利弊/利弊,並挑選最合適的

這將是我的簡短說明而不使用示例。但是,我總是喜歡使用的例子,無論如何,所以如果讓我提供的例子太多,我會選擇這些展示設計模式工作的「如果你看到這一點,做到這一點」的方式

  1. 當你知道你必須提供「撤消」功能,在您的交易,你知道,命令模式是很長的路要走

  2. 當你使用一個資源管理器,它會是不錯的使用Singleton模式

  3. 但是在爲您的RGP遊戲NPC設計AI時,您可以使用策略模式或模板模式。有些人甚至可能選擇裝飾模式。並不總是有一個確定的贏家。取決於什麼適合你更好。

1

在模塊之間劃分責任,任務和信息以及定義它們之間關係的常見情景?

0

設計模式是用來根據特定條件構造類的模式。

例子:

  1. 如果有,應該在整個應用程序(如數據庫適配器類)只有1個實例你去Singleton模式,這是一種模式,一次構造一個對象的類。只有1個實例。

  2. 當你有大量的屬性和默認值的類你去Builder,它可以讓你構造一個對象通過鏈接它的制定者

    MyClass myClass = new MyClass.Builder() 
        .setTitle("my title") 
        .setBody("this is a body for the class") 
        .setEnabled(true) 
        .build(); 
    
  3. 如果您有相關的業務對象之間的操作。但他們沒有一個擁有另一個,你去爲Facade,這創建了一個業務的門面來處理所述對象。

    I.E:您有Movies,0 Sales對象,但如果清單中有電影,則只能創建Sale。您不能使用Sales來檢查Movies,但可以創建名爲Store的外觀,並處理對象的操作,如Store#createSale()

  4. 當您有基於事件的代碼執行(如點擊)時,您可以使用ListenerCallback

+1

「..您使用基於特定條件構建一個類」許多設計模式將引入一桶類,不只是一個:) – yannicuLar