設計原則包括:編程
一、單一職責原則、設計模式
二、里氏替換原則、ide
三、依賴倒置原則、工具
四、接口隔離原則、測試
五、迪米特法則、spa
六、開閉原則。設計
一、單一職責原則(Single Responsibility Principle,SRP):代理
There should never be more than one reason for a class to change.對象
對於一個類來講,應只專一於一件事和僅有一個引發變化的緣由。繼承
我本身的理解是:一個類須要專注完成它所能作的一件事,並非不少事情都須要這一個類來提供完成,若是須要作其餘事,就再建立另外一個類。
優勢:
a,下降類的負責性;
b,提升類的可讀性;
c,提升代碼的可維護性和複用性;
d,下降因變動引發的風險。
二、裏氏替換原則(Liskov Substitution Principle,LSP):
下面先來講說繼承的優勢和缺點吧:
優勢:
代碼共享,減小建立類的工做量,每一個子類都擁有父類的全部屬性和方法;
提升代碼的可重用性;
提升代碼的可擴張性;
提升產品或項目的開放性。
缺點:
繼承是***性的,擁有父類的屬性和方法;
下降代碼的靈活性,必須擁有父類的屬性和方法;
加強耦合性,父類屬性或方法改變,須要考慮子類。
綜上所述,繼承的「利」大於「弊」,如今用「里氏替換原則」來下降「弊」帶來的麻煩。
里氏替換原則的定義有兩種:
①:假如對S類型的對象o1,都有類型T的對象o2,使得以S定義的程序P在全部的對象o1都替換成
o2,則程序P的行爲沒有發生變化,那麼T是S的子類型。
②:全部引用基類的地方必須可以透明的使用其子類對象。
體現里氏替換原則的設計模式有:策略模式、組合模式、代理模式。
三、依賴倒置原則(Dependency Inversion Principle,DIP)
面向接口編程——OOD。
高層模塊不該該依賴底層模塊,二者都依賴其抽象;抽象不依賴細節;細節應該依賴於抽象。
依賴倒置原則是JavaBean、EJB、COM等組件設計模型背後的基本原則。
本質:經過抽象(接口或抽象類)使各個類或模塊的實現彼此獨立,互不影響,實現模塊間的鬆耦合。
使用此原則的規則:
①每一個類,接口或抽象類;②變量的表現類型,接口或抽象類;③類都不從具體類派生;④不重寫
基類方法;⑤結合里氏替換原則。
依賴倒置原則在大項目的體現上,優勢很明顯。
四、接口隔離原則(Interface Segregation Principle,ISP)
兩種定義:
①客戶端不該該依賴他不須要的接口;
②類間的依賴關係應該創建在最小的接口上。
含義:a,一個類對另外一個類的依賴性應當是創建在最小的接口上;
b,一個接口表明一個角色,不該當就愛那個不一樣角色都交給一個接口;
c,不該該強迫客戶依賴他們不用的方法。
五、迪米特法則(Law of Demeter,LOD)
也叫作:最少知識原則(Least Knowledge Principle,LKP)
一個類須要調用另外一個類的某一方法,能夠經過第三者轉發這個調用。
減小類之間的關係,下降類之間的耦合,提升類複用率。
設計模式使用迪米特法則的有:外觀模式、中介者模式。
六、開閉原則(Open-Closed Principle,OCP)
在面向對象的編程中,開閉原則是最基礎的原則,起到總的指導做用,其餘原則都是開閉原則的手
段和工具。
①:提升複用性;
②:提升可維護性;
③:提升靈活性;
④:易於測試;