六大設計原則
單一職責原則
Single Responsibility Principle
定義:應該有且僅有一個原因引起類的變更蔗喂。
單一職責適用于接口皇型、類舔腾,同時也適用于方法岛杀。
優(yōu)勢:
類的復雜性降低,實現(xiàn)什么職責都有清晰明確的定義沸版;
可讀性提高嘁傀;
可維護性提高兴蒸;
變更引起的風險性降低视粮。
里氏替換原則
Liskov Substitution Principle
所有引用基類的地方必須能透明的使用其子類的對象。
4層含義:
1橙凳,子類必須完全實現(xiàn)父類的方法蕾殴;
2,子類可以有自己的個性岛啸;
3钓觉,覆蓋或?qū)崿F(xiàn)父類的方法時輸入?yún)?shù)可以被放大;
4坚踩,覆蓋或?qū)崿F(xiàn)父類的方法時輸出結(jié)果可以被縮小荡灾。
優(yōu)勢:
代碼共享,減少創(chuàng)建類的工作量,每個子類都擁有父類的方法和屬性批幌;
提高代碼的重用性础锐;
子類可以形似父類,但又異于父類荧缘;
提高代碼的可擴展性皆警;
提高產(chǎn)品或項目的開放性。
缺點:
繼承時侵入性的截粗,只要繼承信姓,就必須擁有父類的所有屬性和方法;
降低代碼的靈活性绸罗;
增強了耦合性意推。
依賴倒置原則
Dependence Inversion Principle
依賴倒置原則可以減少類間的耦合性,提高系統(tǒng)的穩(wěn)定性珊蟀,降低并行開發(fā)引起的風險左痢,提高代碼的可讀性和可維護性。
三層含義
1系洛,高層模塊不應該依賴低層模塊俊性,兩者都應該依賴其抽象;
2描扯,抽象不應該依賴細節(jié)定页;
3,細節(jié)應該依賴抽象绽诚。
三種寫法
1典徊,構(gòu)造函數(shù)傳遞依賴對象;
2恩够,Setter方法傳遞依賴對象卒落;
3,接口聲明依賴對象蜂桶。
本質(zhì)是通過抽象(接口或抽象類)使各個類或模塊的實現(xiàn)彼此獨立儡毕,不互相影響,實現(xiàn)模塊間的松耦合扑媚。我們需要遵循的幾個規(guī)則:
1腰湾,每個類盡量都有接口或抽象類,或者兩者都有疆股;
2费坊,變量的表面類型盡量。是接口或者是抽象類旬痹;
3附井,任何類都不應該從具體類派生讨越;
4,盡量不要覆蓋基類的方法永毅;
5谎痢,結(jié)合里氏替換原則使用
接口隔離原則
Interface Segregation Principle
四層含義
1,接口要盡量芯淼瘛节猿;
2,接口要高內(nèi)聚漫雕;
3滨嘱,定制服務;
4浸间,接口設計是有限度的太雨。
迪米特法則
Law of Demeter
也稱為最少知識原則
一個對象應該對其他對象有最少的了解。
四層含義
1魁蒜,只和朋友交流囊扳;
2,朋友間也是有距離的兜看;
3锥咸,是自己的就是自己的;
4细移,謹慎使用Serializable搏予。
開閉原則
Open Closed Principle
一個軟件實體如類、模塊和函數(shù)應該對擴展開放弧轧,對修改關(guān)閉雪侥。