1. 程式人生 > >面向物件之名詞解釋

面向物件之名詞解釋

面向物件的定義

面向物件

(Object-Oriented)=物件(Object)+類(Class)+ 繼承(Inheritance)+通訊(Communication) 

如果一個軟體系統是使用這樣4個概念設計和實現的,則將該軟體系統稱為面向物件的。

面向物件的三大特性

  • 封裝
降低程式碼之間的耦合度
  • 繼承

繼承在提高程式碼的複用性、統一性時,也提高了耦合度,破壞封閉性。

  • 多型

與多型有關的特性:過載(overload)、動態繫結(dynamic binding)、類屬(generic 服務參量的型別可引數化)

面向物件的五大原則

  • 單一職責原則
  • 開放封閉原則
  • 里氏替換原則
  • 依賴倒置原則
  • 介面隔離原則

單一職責原則(SRP)

  • 一個類應該僅有一個引起它變化的原因

開放封閉原則(OCP)

  • 對擴充套件開放,對更改封閉
  • 開放指:能夠對原有的程式碼進行復用
  • 封閉指:不能修改原有的程式碼,或者重新編譯
  • 要做到這一點,就要靈活使用封裝、多型、繼承

里氏替換原則(LSP)

  • 子類可以替換父類並且出現再父類能夠出現的任何地方
  • 這個原則倡導面向介面或抽象類程式設計

依賴倒置原則(DIP)

  • 傳統的結構化程式設計中,最上層的模組通常都要依賴下面的子模組來實現,也稱為高層依賴低層
  • 該原則就是要逆轉這種依賴關係,讓底層依賴高層。這樣可增加系統的可擴充套件性和可維護性。

介面隔離原則(ISP)

  • 一個介面應該有儘可能少的方法
  • 使用多個專門的介面比使用單個介面要好的多

介面與抽象類

1.語法層面的區別
  • 抽象類可以有非抽象方法,而介面的方法只能時抽象的
  • 抽象類中的成員變數的許可權可以時任意的,而介面中的成員變數的許可權只有 public static fianl
  • 介面中不能含有靜態程式碼塊以及靜態方法,而抽象類都可以有
2.設計層面的區別
  • 抽象類是對事物的抽象,而介面是對行為的抽象。抽象類在抽象事物時,對事物整體進行抽象,包括屬性,行為。但是,介面並不關心事物的種類,而只關心,具有相同行為的多種型別的事物。
  • 抽象類作為很多子類的父類,它是一種設計模板,規定了子類必須具有的方法和屬性。而介面是一種行為規範,它規定了凡是具有該行為的類,必須使用什麼樣的方法申明。在這一點上,介面隔離原則,就是在盡力維護行為的簡潔性。而抽象類則要儘可能的抽象出所需要的所有特性。