參考出處:https://www.cnblogs.com/zhili/p/DesignPatternSummery.htmlhtml
類設計的幾個原則算法
單一職責原則、開放封閉原則、里氏代替原則、依賴倒置原則、接口隔離原則、合成複用原則和迪米特法則。編程
1.單一職責原則設計模式
就一個類而言,應該只有一個引發它變化的緣由。若是一個類承擔的職責過多,就等於把這些職責耦合在一塊兒,一個職責的變化可能會影響到其餘的職責,另外,把多個職責耦合在一塊兒,也會影響複用性。函數
2.開閉原則優化
開閉原則即OCP(Open-Closed Principle縮寫)原則,該原則強調的是:一個軟件實體(指的類、函數、模塊等)應該對擴展開放,對修改關閉。即每次發生變化時,要經過添加新的代碼來加強現有類型的行爲,而不是修改原有的代碼。spa
符合開閉原則的最好方式是提供一個固有的接口,而後讓全部可能發生變化的類實現該接口,讓固定的接口與相關對象進行交互。設計
3.里氏代替原則代理
指的是子類必須替換掉它們的父類型 。也就是說,在軟件開發過程當中,子類替換父類後,程序的行爲是同樣的。只有當子類替換掉父類後,此時軟件的功能不受影響時,父類才能真正地被複用,而子類也能夠在父類的基礎上添加新的行爲。爲了就來看看違反了LSP原則的例子,具體代碼以下所示:htm
4.依賴倒置原則
原則指的是抽象不該該依賴於細節,細節應該依賴於抽象,也就是提出的 「面向接口編程,而不是面向實現編程」。這樣能夠下降客戶與具體實現的耦合。
5.接口隔離原則
接口隔離原則(Interface Segregation Principle, ISP)指的是使用多個專門的接口比使用單一的總接口要好。也就是說不要讓一個單一的接口承擔過多的職責,而應把每一個職責分離到多個專門的接口中,進行接口分離。過於臃腫的接口是對接口的一種污染。
6.就是在一個新的對象裏面使用一些已有的對象,使之成爲新對象的一部分。新對象經過向這些對象的委派達到複用已用功能的目的。簡單地說,就是要儘可能使用合成/聚合,儘可能不要使用繼承。
7.迪米特法則
指的是一個對象應當對其餘對象有儘量少的瞭解。也就是說,一個模塊或對象應儘可能少的與其餘實體之間發生相互做用,使得系統功能模塊相對獨立,這樣當一個模塊修改時,影響的模塊就會越少,擴展起來更加容易。
設計模式的類型區分
1.建立型模式
建立型模式就是用來建立對象的模式,抽象了實例化的過程。全部的建立型模式都有兩個共同點。第一,它們都將系統使用哪些具體類的信息封裝起來;第二,它們隱藏了這些類的實例是如何被建立和組織的。建立型模式包括單例模式、工廠方法模式、抽象工廠模式、建造者模式和原型模式。
2.結構型模式
結構型模式,顧名思義討論的是類和對象的結構 ,主要用來處理類或對象的組合。它包括兩種類型,一是類結構型模式,指的是採用繼承機制來組合接口或實現;二是對象結構型模式,指的是經過組合對象的方式來實現新的功能。它包括適配器模式、橋接模式、裝飾者模式、組合模式、外觀模式、享元模式和代理模式。
3.行爲型模式
行爲型模式是對在不一樣對象之間劃分責任和算法的抽象化。行爲模式不單單關於類和對象,還關於它們之間的相互做用。行爲型模式又分爲類的行爲模式和對象的行爲模式兩種。
行爲型模式包括11種模式:模板方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、狀態模式、策略模式、責任鏈模式、訪問者模式、解釋器模式和備忘錄模式。
23種設計模式,其實前輩們總結出來解決問題的方式,它們追求的宗旨仍是保證系統的低耦合高內聚,指導它們的原則無非就是封裝變化,責任單一,面向接口編程等設計原則