-
單一職責(zé)原則(SRP:Single Responsibility Principle)
就一個(gè)類而言,應(yīng)該僅有一個(gè)引起其變化的原因。
??一個(gè)類中應(yīng)該是一組相關(guān)性很高的函數(shù)、數(shù)據(jù)的封裝。 -
開閉原則(OCP:Open Close Principle)
讓程序更穩(wěn)定、靈活。
??軟件中的對(duì)象(類、模塊、函數(shù)等)對(duì)于擴(kuò)展是開放的,對(duì)于修改是封閉的,即:當(dāng)軟件發(fā)生變化時(shí),盡量使用擴(kuò)展來實(shí)現(xiàn)變化,而不是修改。 -
里氏替換原則(LSP:Liskov Substitution Principle)
構(gòu)建擴(kuò)展性更好的軟件。
??只要父類能出現(xiàn)的地方,子類就能夠出現(xiàn),而且替換為子類不會(huì)引發(fā)任何錯(cuò)誤或異常,反之則不行。
??如下:window.show(view),view可替換為button或textView
public class Window {
public void show(View view) {
//...
}
}
/**
* 父類
*/
public abstract class View {
//...
}
/**
* 子類Button
*/
public class Button extends View {
//...
}
/**
* 子類Button
*/
public class TextView extends View {
//...
}
繼承的優(yōu)點(diǎn):代碼重用、擴(kuò)展
???缺點(diǎn):冗余、侵入(子類入侵父類的屬性與方法)
-
依賴倒置原則(DIP:Dependence Inversion Principle)
解耦,使代碼更多變。
??依賴通過抽象(接口、抽象類)產(chǎn)生,實(shí)現(xiàn)類之間不直接依賴。 -
接口隔離原則(ISP:Interface Segregation Principle)
接口應(yīng)該盡量原子化,依賴時(shí)候只依賴所需要的接口。
-
迪米特原則(LOD:Law Of Demeter)
更好的擴(kuò)展性。
??一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有盡量少的了解,類與類之間關(guān)系越密切,耦合度就越大。
??比如:Activity之間的傳參,Activity1啟動(dòng)Activity2,只需傳給Activity2所需的參數(shù)即可,盡量避免傳對(duì)象的情況。
總結(jié)
軟件開發(fā),最難的不是完成開發(fā),而是后續(xù)的維護(hù)、升級(jí)中,依然讓代碼簡潔高效。多么痛的領(lǐng)悟????