單一職責(zé)(Single Responsibility Principle)
每個(gè)方法木人,每個(gè)類,每個(gè)框架驾胆,都只負(fù)責(zé)一件事情 (There should never be more than one reason for a class to change)
總結(jié):
1,不要為類實(shí)現(xiàn)過多的功能點(diǎn),以保證實(shí)體只有一個(gè)引起它變化的原因。
開閉原則(Open Closed Principle)
軟件實(shí)體(包括類、模塊、功能等)應(yīng)該對擴(kuò)展開放滓侍,但是對修改關(guān)閉(Software entities (classes, modules, functions) should be open for extension but closed for modification)
總結(jié)
1,一個(gè)實(shí)體是允許在 【不改變它的源代碼】 的前提下 變更它的行為
接口隔離原則(Interface Segregation Principle)
其一是不應(yīng)該強(qiáng)行要求客戶端依賴于它們不用的接口牲芋;其二是類之間的依賴應(yīng)該建立在最小的接口上面(Clients should not be forced to depend upon interfaces that they don't use; The dependency of one class to another one should depend on the smallest possible interface)
總結(jié)
1撩笆,客戶端需要什么接口,就依賴什么接口缸浦,不需要的就不依賴, 如果客戶端依賴了它們不需要的接口夕冲,那么這些客戶端程序就面臨不需要的接口變更引起的客戶端變更的風(fēng)險(xiǎn),這樣就會增加客戶端和接口之間的耦合程度裂逐,顯然與“高內(nèi)聚歹鱼、低耦合”的思想相矛盾
2,使用多個(gè)專門的接口卜高,比使用單一的接口要好弥姻。
依賴倒置原則(Dependence Inversion Principle)
高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象掺涛;抽象不應(yīng)該依賴細(xì)節(jié)庭敦,細(xì)節(jié)應(yīng)該依賴抽象(High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions)
總結(jié)
1,模塊間的依賴是通過抽象發(fā)生薪缆,實(shí)現(xiàn)類之間不發(fā)生直接的依賴關(guān)系秧廉,其依賴關(guān)系是通過接口或抽象類產(chǎn)生的。
》高層模塊:調(diào)用別的方法的模塊
》底層模塊:被其他方法調(diào)用的
2矮燎,接口和抽象類不應(yīng)該依賴于實(shí)現(xiàn)類定血,而實(shí)現(xiàn)類依賴接口或抽象類
3赔癌,對抽象進(jìn)行編程诞外,不要對實(shí)現(xiàn)進(jìn)行編程
迪米特法則(Law of Demeter)
一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少地與其他實(shí)體發(fā)生相互作用 ;一個(gè)對象應(yīng)當(dāng)對其他對象有盡可能的了解灾票,不和陌生人說話峡谊。
總結(jié):