當前位置:編程學習大全網 - 編程語言 - 面向對象設計的6個設計原則最早誰提出的

面向對象設計的6個設計原則最早誰提出的

1967年挪威計算中心的Kisten Nygaard和Ole Johan Dahl開發了Simula67語言,它提供了比子程序更高壹級的抽象和封裝,引入了數據抽象和類的概念,它被認為是第壹個面向對象語言。

20世紀70年代初,Palo Alto研究中心的Alan Kay所在的研究小組開發出Smalltalk語言,之後又開發出Smalltalk-80,Smalltalk-80被認為是最純正的面向對象語言,它對後來出現的面向對象語言,如Object-C,C++,Self,Eiffl都產生了深遠的影響。

隨著面向對象語言的出現,面向對象程序設計也就應運而生且得到迅速發展。

之後,面向對象不斷向其他階段滲透,1980年Grady Booch提出了面向對象設計的概念,之後面向對象分析開始。

1985年,第壹個商用面向對象數據庫問世。1990年以來,面向對象分析、測試、度量和管理等研究都得到長足發展。

面向對象設計的6個設計原則:

什單壹職責:

壹個類中的屬性和方法要有很高的相關性,不然就拆開;如果壹個類很龐大,則需要進壹步細分職能,把相關性更高的歸到壹塊。

開閉原則:

對擴展開放,對修改關閉。

極端要求就是:程序完成後,除非是修改錯誤,不然不能修改代碼,只能擴展代碼。

比如壹個功能,有多種實現方法,即有多個類型,不要用if-else這種分支在壹個類中去指定其類型;而是對接口編程,通過繼承,把實現透明化,每增加壹個類型就增加壹個類。

想這麽壹個問題,每增加壹個類型的時候,是修改原類添加壹個else分支好還是實現壹個新的與老代碼無關的新類好?

下面這種實現就是對修改開放的結果,每次要增加壹個類型,都得修改原有代碼,導致原有系統可能被引入bug,需要被重新測試:

class Demo { public static final int TYPE_A = 1; public static final int TYPE_B = 2; public static final int TYPE_C = 3; public Demo(int type) { if(type == 1) { //act as TYPE_A } if(type == 2) { //act as TYPE_B } if(type ==3) { //act as TYPE_C }

}

}

下面這種情況就是對修改關閉,通過對接口變成對擴張開放,新增壹個類型不用修改原有代碼:

interface Type {

} class Demo2 { private Type mType = null; public Demo2() {

} public void setType(Type type) {

mType = type;//act like what you assigned. }

} class TypeA implements Type {

}

裏氏替換原則:

開閉原則就是通過裏氏替換來實現的,即對接口編程,建立抽象,具體的實現在運行時替換掉抽象,所有引用基類的地方必須能透明地使用其子類對象。

依賴導致原則:

就是調用者(客戶代碼)不依賴於被調用者(實現代碼)的實現細節,而是依賴其抽象。

調用者不依賴被調用者的具體實現,而是依賴被調用者的抽象,這樣被調用者後續可以被無感替換掉;

接口隔離原則:

接口定義要最小化,就是接口只專註壹個領域,不要大而全,要小而細。

比如Closeable接口只管close,不管其實現類的其他事情,Comparable接口只管比較,不管其他的。

迪米特原則(least Knowledge Principle):

就是類與類的少了解,即類只需要知道依賴類必須知道的方法,其余的細節不要去了解;類的“朋友”要少,即類盡可能只跟必須要打交道的有依賴,不要依賴壹大堆。

各大中小企業尋找軟件定制開發及軟件產品,網站建設等服務,就要找類似優客美這種擁有壹流的技術團隊與專業的服務人員,具備很強技術能力的正規軟件公司。

  • 上一篇:iphone怎麽把電池添加到小組件
  • 下一篇:怎樣學習大數據
  • copyright 2024編程學習大全網