1、單一職責(zé)原則:一個(gè)類只有一個(gè)引起它變化的原因。說白了就是,一個(gè)類只有單一的一個(gè)功能,不同的類具備不同的職責(zé),各司其職。如果一個(gè)類有多種職責(zé),就應(yīng)該分成多個(gè)類。
2、開閉原則:對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。如果需要增加功能,那么就擴(kuò)展新類,而不是修改原來的類,所以在類設(shè)計(jì)時(shí)就要保證可以通過擴(kuò)展的方式來添加新功能。
3、里氏替換原則:在代碼中可以將父類全部替換為子類,程序不會(huì)報(bào)錯(cuò)。也就是父類的方法,在子類中全都有。反過來不一定行。子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。
4、接口隔離原則:客戶端不應(yīng)該依賴它不需要的接口;一個(gè)類與另一個(gè)類的依賴應(yīng)該建立在盡可能小的接口上。
5、依賴倒置原則:高層模塊不應(yīng)該依賴低層模塊,二者一個(gè)依賴抽象;抽象不應(yīng)該依賴細(xì)節(jié);細(xì)節(jié)應(yīng)該依賴于抽象。就是說要針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。就好比手機(jī)充電器,因?yàn)槌潆娊涌谑且粋€(gè)標(biāo)準(zhǔn),所以自己的充電器沒帶時(shí)借用別人的充電器也一樣能充電。
6、迪米特法則,也叫最少知道原則:如果兩個(gè)類不必彼此直接通信,那么這兩個(gè)類就不應(yīng)當(dāng)發(fā)生直接的相互作用。如果其中一個(gè)類需要調(diào)用另一個(gè)類的某一個(gè)方法的話,可以通過第三者轉(zhuǎn)發(fā)這個(gè)調(diào)用。根本思想就是強(qiáng)調(diào)類與類之間松耦合。類之間的耦合越弱,越有利于復(fù)用。