宣城市建設(shè)監(jiān)督管理局網(wǎng)站下載企業(yè)宣傳網(wǎng)站
設(shè)計模式有7個原則:單一職責(zé)原則、開閉原則、里氏代換原則、依賴倒轉(zhuǎn)原則、接口隔離原則、合成/聚合復(fù)用原則、迪米特法則
1.單一職責(zé)原則
單一職責(zé)原則又稱單一功能原則,它規(guī)定一個類只有一個職責(zé)。如果有多個職責(zé)(功能)被設(shè)計在一個類中,這個類就違反了單一職責(zé)原則。
2.開閉原則
開閉原則規(guī)定軟件中的對象(類、模塊、函數(shù)等)對擴展開放,對修改封閉,這意味著一個實體允許在不改變其源代碼的前提下改變其行為,該特性在產(chǎn)品化的環(huán)境下是特別有價值的,在這種環(huán)境下,改變源代碼需要經(jīng)過代碼審查、單元測試等過程,以確保產(chǎn)品的使用質(zhì)量。遵循這個原則的代碼在擴展時并不發(fā)生改變,因此不需要經(jīng)歷上述過程。
3.里氏代換原則
里氏代換原則是對開閉原則的補充,規(guī)定了在任意父類可以出現(xiàn)的地方,子類都一定可以出現(xiàn)。實現(xiàn)開閉原則的關(guān)鍵就是抽象化,父類與子類的繼承關(guān)系就是抽象化的具體表現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范。
4.依賴倒轉(zhuǎn)原則
依賴倒轉(zhuǎn)原則指程序要依賴于抽象(Java中的抽象類和接口),而不依賴于具體的實現(xiàn)(Java中的實現(xiàn)類)。簡單地說,就是要求對抽象進行編程,不要求對實現(xiàn)進行編程,這就降低了用戶與實現(xiàn)模塊之間的耦合度。
5.接口隔離原則
接口隔離原則指通過將不同的功能定義在不同的接口中來實現(xiàn)接口的隔離,這樣就避免了其他類在依賴該接口(接口上定義的功能)時依賴其不需要的接口,可減少接口之間依賴的冗余性和復(fù)雜性。
6.合成/聚合復(fù)用原則
合成/聚合復(fù)用原則指通過在一個新的對象中引入(注入)已有的對象以達(dá)到類的功能復(fù)用和擴展的目的。它的設(shè)計原則是要盡量使用合成或聚合而不要使用繼承來擴展類的功能。
7.迪米特法則
迪米特法則指一個對象盡可能少地與其他對象發(fā)生相互作用,即一個對象對其他對象應(yīng)該有盡可能少的了解或依賴。其核心思想在于降低模塊之間的耦合度,提高模塊的內(nèi)聚性。迪米特法則規(guī)定每個模塊對其他模塊都要有盡可能少的了解和依賴,因此很容易使系統(tǒng)模塊之間功能獨立,這使得各個模塊的獨立運行變得更簡單,同時使得各個模塊之間的組合變得更容易。
設(shè)計模式按照其功能和使用場景可以分為三大類:創(chuàng)建型模式(Creational Pattern)、結(jié)構(gòu)型模式(Structural Pattern)和 行為型模式(Behavioral Pattern)。
1)創(chuàng)建型
????????常用的有:單例模式、工廠模式(工廠方法和抽象工廠)、建造者模式。
????????不常用的有:原型模式。
2)結(jié)構(gòu)型
????????常用的有:代理模式、橋接模式、裝飾者模式、適配器模式。
????????不常用的有:門面模式、組合模式、享元模式。
3)行為型
????????常用的有:觀察者模式、模板模式、策略模式、職責(zé)鏈模式、迭代器模式、狀態(tài)模式。
????????不常用的有:訪問者模式、備忘錄模式、命令模式、解釋器模式、中介模式。