- 開閉原則(Open Close Principle)
對(duì)擴(kuò)展打開撩幽,對(duì)修改關(guān)閉兜挨。在程序需要進(jìn)行拓展的時(shí)候,不能去修改原有的代碼葬燎,實(shí)現(xiàn)一個(gè)熱插拔的效果误甚。簡(jiǎn)言之,是為了使程序的擴(kuò)展性好谱净,易于維護(hù)和升級(jí)靶草。想要達(dá)到這樣的效果,我們需要使用接口和抽象類岳遥,后面的具體設(shè)計(jì)中我們會(huì)提到這點(diǎn)。
- 里氏代換原則(Liskov Substitution Principle)
父子可以相互調(diào)用裕寨,父類必須提供足夠多的抽象方法供子類重載使用浩蓉。 任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)宾袜。LSP 是繼承復(fù)用的基石捻艳,只有當(dāng)派生類可以替換掉基類,且軟件單位的功能不受到影響時(shí)庆猫,基類才能真正被復(fù)用认轨,而派生類也能夠在基類的基礎(chǔ)上增加新的行為。里氏代換原則是對(duì)開閉原則的補(bǔ)充月培。實(shí)現(xiàn)開閉原則的關(guān)鍵步驟就是抽象化嘁字,而基類與子類的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn),所以里氏代換原則是對(duì)實(shí)現(xiàn)抽象化的具體步驟的規(guī)范杉畜。
- 依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)
抽象不依賴細(xì)節(jié)纪蜒,細(xì)節(jié)依賴抽象。這個(gè)原則是開閉原則的基礎(chǔ)此叠,具體內(nèi)容:針對(duì)接口編程纯续,依賴于抽象而不依賴于具體。
- 接口隔離原則(Interface Segregation Principle)
盡量做必要的事。使用多個(gè)隔離的接口猬错,比使用單個(gè)接口要好窗看。它還有另外一個(gè)意思是:降低類之間的耦合度。由此可見倦炒,其實(shí)設(shè)計(jì)模式就是從大型軟件架構(gòu)出發(fā)显沈、便于升級(jí)和維護(hù)的軟件設(shè)計(jì)思想,它強(qiáng)調(diào)降低依賴析校,降低耦合构罗。
- 最少知道原則(Demeter Principle):
個(gè)實(shí)體應(yīng)當(dāng)盡量少地與其他實(shí)體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對(duì)獨(dú)立智玻。
- 合成/聚合復(fù)用:
盡量使用合成/聚合的方式遂唧,而不是使用繼承。