一般學習一個新的知識點時,總先要看一遍理論知識,雖然看不懂,但是在看具體代碼時就會慢慢的懂得。
設計原則是前輩大牛總結出的設計模式的理論知識,有必要先學設計模式。
1.單一職責原則
一個類或接口或方法或結構體,應該只有一個引起它變化的原因,如果一個類承擔的責任太多,就相當於把這些責任耦合在一起了,一個責任可能會影響另外一個責任,不利於後期的維護。
2.開閉原則(Open-Closed Principle)
開閉原則即OCP(Open-Closed Principle縮寫)原則,該原則強調的是:一個軟件實體(指的類、函數、模塊等)應該對擴展開放,對修改關閉。即每次發生變化時,要通過添加新的代碼來增強現有類型的行爲,而不是修改原有的代碼。
符合開閉原則的最好方式是提供一個固有的接口,然後讓所有可能發生變化的類實現該接口,讓固定的接口與相關對象進行交互。
3 里氏代替原則(Liskov Substitution Principle)
面對對象編程三大特性之一繼承:所有父類出現的地方都可以用子類來代替。
此原則強調:所有父類出現的地方,必須用子類來代替,子類繼承父類的所有,所以不會對程序有所影響,子類添加新功能也不會影響父類,提高父類代碼的可重複性。
4.依賴倒置原則
依賴倒置(Dependence Inversion Principle, DIP)原則強調:抽象不要依賴細節,細節要依賴抽象,儘量用抽象來代替細節。也是面對接口編程,而不是面對實現編程,將一切細節儘量用抽象來代替可以提高代碼的可擴展,可維護性,減少代碼的耦合性。
5.接口隔離原則
接口隔離原則(Interface Segregation Principle, ISP):一個接口能不能承擔過多的細節抽象,儘量分成不同的接口,進行接口分離。
6.合成複用原則
合成複用原則(Composite Reuse Principle, CRP)就是在一個新的對象裏面使用一些已有的對象,使之成爲新對象的一部分。新對象通過向這些對象的委派達到複用已用功能的目的。簡單地說,就是要儘量使用合成/聚合,儘量不要使用繼承。
7.迪米特法則
迪米特法則(Law of Demeter,LoD)又叫最少知識原則(Least Knowledge Principle,LKP),指的是一個對象應當對其他對象有儘可能少的瞭解。也就是說,一個模塊或對象應儘量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立,這樣當一個模塊修改時,影響的模塊就會越少,擴展起來更加容易。
關於迪米特法則其他的一些表述有:只與你直接的朋友們通信;不要跟“陌生人”說話。
外觀模式(Facade Pattern)和中介者模式(Mediator Pattern)就使用了迪米特法則。