面向對象編程思想(OOP)總結


本文我將從面向對象編程思想是如何解決軟件開發中各種疑難問題的角度,來講述我們面向對象編程思想的理解,梳理面向對象四大基本特性、七大設計原則和23種設計模式之間的關系。

軟件開發中疑難問題:

  • 軟件復雜龐大
  • 很多軟件進入維護階段
  • 需求的不斷變更

軟件開發中存在很多其他的問題,上面只是從程序開發和設計的角度看到的部分問題。需求解決上面軟件開發中的問題,就要求我們編寫(設計)的軟件具有很好的可讀性、可維護性和可擴展性。我們需要保證代碼具有高內聚低耦合。

下面將簡單介紹面向對象的一些基本特性、設計原則,以及設計模式關系。

四大基本特性

抽象:提取現實世界中某事物的關鍵特性,為該事物構建模型的過程。對同一事物在不同的需求下,需要提取的特性可能不一樣。得到的抽象模型中一般包含:屬性(數據)和操作(行為)。這個抽象模型我們稱之為。對類進行實例化得到對象。

封裝:封裝可以使類具有獨立性和隔離性;保證類的高內聚。只暴露給類外部或者子類必須的屬性和操作。類封裝的實現依賴類的修飾符(public、protected和private等)

繼承:對現有類的一種復用機制。一個類如果繼承現有的類,則這個類將擁有被繼承類的所有非私有特性(屬性和操作)。這里指的繼承包含:類的繼承和接口的實現。

多態:多態是在繼承的基礎上實現的。多態的三個要素:繼承、重寫和父類引用指向子類對象。父類引用指向不同的子類對象時,調用相同的方法,呈現出不同的行為;就是類多態特性。多態可以分成編譯時多態和運行時多態。

抽象、封裝、繼承和多態是面向對象的基礎。在面向對象四大基礎特性之上,我們在做面向對象編程設計時還需要遵循有一些基本的設計原則。

七大設計原則

  • 單一職責原則:即職責划分要清晰,不同職責的不要攪和在一起。每個類應該只有一個讓他發生改變的原因(隔離)
  • 開放關閉原則:對擴展開發,對修改封閉。即如果系統要變化,就去擴展、新增新類,不要修改現有的類( 依賴於抽象,隔離具體)
  • 里氏替換原則:子類應該能充分覆蓋父類,並且讓使用者分不出差別(抽象)
  • 接口隔離原則:每個接口只管一個功能,不要出現“胖接口”。增加功能時,要加接口,而不是改接口(隔離)
  • 依賴倒置原則:具體應該依賴於抽象,而不是抽象一來於具體,即低層要依賴於高層(依賴於抽象)
  • 迪米特法則
  • 組合優於繼承原則(合成復用原則)

23種設計模式

在遵循這些面向對象設計原則基礎上,前輩們總結出一些解決不同問題場景的設計模式,以四人幫的gof23最為知名。
24種設計模式(gof23+1):
  • 創建型模式:
  1. 簡單工廠模式(不包含在gof23中)
  2. 工廠模式
  3. 抽象工廠模式
  4. 單例模式
  5. 原型模式
  6. 創建者模式
  • 結構型模式:
  1. 組合模式
  2. 裝飾者模式
  3. 外觀模式
  4. 適配器模式
  5. 代理模式
  6. 享元模式
  7. 橋接模式
  • 行為型模式:
  1. 觀察者模式
  2. 策略模式
  3. 狀態模式
  4. 中介模式
  5. 模板方法
  6. 命令模式
  7. 備忘錄模式
  8. 訪問者模式
  9. 解釋器模式
  10. 迭代器模式
  11. 職責鏈模式
在本文中只是為了梳理清楚面向對象的基本特性、設計原則和設計模式的關系

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM