數(shù)據(jù)結構研究的是針對具體問題的算法,設計模式是面向應用開發(fā)的一種策略。
設計模式實際上就是編程方式和習慣,是經(jīng)驗的總結,這和生活習慣類似,如果擁有好的生活習慣,你就會很健康,在其他人眼里也會很好,而如果生活習慣不好,時間不顧慮,這當然沒什么問題(自我感覺良好),但可能會對自己的健康和其他的方面帶來影響(有時會很大)。
設計模式也一樣,雖然不使用任何設計模式也可以寫任何的軟件,但是這就相當于沒有好的生活習慣一樣,會給這些系統(tǒng)帶來很大的麻煩,就象一個人的煙隱很大,長期下去,得肺癌的幾率要比不吸煙的人大得多。 而使用設計模式來實現(xiàn)軟件,就相當于擁有好的生活習慣,這樣會使整個軟件系統(tǒng)得到良性的發(fā)展。設計模式不是必須的,但擁有它使用生活變得更美好。?
設計模式后面的道理是軟件的設計原則
開閉原則 OCP(Open-Closed Principle): 對擴展開放,對修改關閉. 抽象和接口是關鍵.
里氏代換原則 LSP(Liskov Substitution Principle):? 如果對于每一個類型為T1的對象o1,都有類型為T2的對象o2, 使得以T1定義的所有程序P在所有對象o1都代換為o2時, 程序P的行為沒有變化, 那么類型T2是類型T1的子類型。反過來代換不成立。
?
依賴倒轉原則DIP(Dependence Inversion Principle): 第一種表述是,抽象不應當依賴與細節(jié),細節(jié)應當依賴與抽象;第二中表述是,要針對抽象和接口編程,不要針對實現(xiàn)編程。
接口隔離原則ISP(Interface Segregation Principle): 使用多個專門的接口比使用一個單一的總接口要好。?
合成/聚合復用原則CARP(Composite/Aggregate Resue Principle): 在一個新對象里面使用一些已經(jīng)有的對象,使之成為新對象的一部分;新的對象通過向這些對象委派達到復用已有功能的一部分。這個設計原則的另一種表述是:要盡量使用合成/聚合,而不要使用繼承。
迪米特法則LoD(Law of Demeter): 又叫做最少知識原則,就是說一個對象應該盡量少的知道另一個對象。它的兩外幾種表述: 只與你直接的朋友通信;不要跟陌生人說話。