面向介面程式設計

CoderSunYu發表於2018-09-26

一、概念

1.什麼是面向介面程式設計

面向介面程式設計就是先把客戶的業務邏輯線提取出來,作為介面,業務具體實現通過該介面的實現類來完成。
當客戶需求變化時,只需編寫該業務邏輯的新的實現類,通過更改配置檔案(例如Spring框架)中該介面
的實現類就可以完成需求,不需要改寫現有程式碼,減少對系統的影響。
複製程式碼

2.面向介面程式設計的優點

1 降低程式的耦合性。其能夠最大限度的解耦,所謂解耦既是解耦合的意思,它和耦合相對。耦合就是聯絡
 ,耦合越強,聯絡越緊密。在程式中緊密的聯絡並不是一件好的事情,因為兩種事物之間聯絡越緊密,你更換
 其中之一的難度就越大,擴充套件功能和debug的難度也就越大。
2 易於程式的擴充套件;
3 有利於程式的維護;
複製程式碼

3.介面程式設計在設計模式中的體現:開閉原則

其遵循的思想是:對擴充套件開放,對修改關閉。其恰恰就是遵循的是使用介面來實現。在使用面向介面的程式設計過程
中,將具體邏輯與實現分開,減少了各個類之間的相互依賴,當各個類變化時,不需要對已經編寫的系統進行
改動,新增新的實現類就可以了,不在擔心新改動的類對系統的其他模組造成影響。
複製程式碼

二、設計模式

1、程式導向程式設計

程式導向就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候一個一個依次呼叫就可以了。

程式導向是一種以過程為中心的程式設計思想。程式導向是一種最為實際的思考方式,就算是物件導向的方法也有程式導向的思想。可以說程式導向是一種基礎的方法。它考慮的是實際的實現。一般程式導向是從上往下步步求精,所以程式導向最重要的是模組化的思想方法。

2、物件導向程式設計

物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

物件:物件是要研究的任何事物。比如人類就是一個物件,然而物件是有屬性和方法的,那麼身高、體重、年齡、性別等等,這些是每個人都有的特徵可以概括為屬性。 :類是物件的模板。即類是對一組有相同屬性和相同操作的物件的定義,一個類所包含的方法和資料描述一組物件的共同屬性和行為。類是在物件之上的抽象,物件則是類的具體化,是類的例項。

2.2.1 物件導向的基本特徵 封裝、繼承、多型、抽象

封裝:就是把屬性私有化,提供公共方法訪問四有物件。

繼承:當多個類具有相同的特徵(屬性)和行為(方法)時,可以將相同的部分抽取出來放到一個類中作為父類,其他類繼承於這個父類。繼承後的子類自動擁有了父類的屬性和方法,比如貓、狗、豬他們共同的特徵都是動物、都會跑會叫等特徵。

但是需要注意的是,父類的私有屬性(private)和構造方法不能被繼承。另外子類可以寫自己特有的屬性和方法,目的是實現功能的擴充套件,子類也可以重寫父類的方法。

多型:簡單來說就是“一種定義,多種實現”。同一類事物表現出多種形態。JAVA語言中有方法過載和物件多型兩種形式的多型。

  方法過載:在一個類中,允許多個方法使用同一個名字,但是方法的引數不同,完成的功能也不同
  物件多型:子類物件可以與父類物件進行相互轉換,而且根據其使用的子類的不同,完成的功能也不同
複製程式碼

3、面向介面程式設計

什麼叫面向介面程式設計

在一個物件導向的系統中,系統的各種功能是由許許多多的不同物件協作完成的。在這種情況下,各個物件內部是如何實現自己的,對系統設計人員來講就不那麼重要了;而各個物件之間的協作關係則成為系統設計的關鍵。小到不同類之間的通訊,大到各模組之間的互動,在系統設計之初都是要著重考慮的,這也是系統設計的主要工作內容。面向介面程式設計就是指按照這種思想來程式設計。

2.3.1 關於介面的理解。

介面從更深層次的理解,應是定義(規範,約束)與實現(名實分離的原則)的分離。

介面的本身反映了系統設計人員對系統的抽象理解。

介面應有兩類:

第一類是對一個體的抽象,它可對應為一個抽象體(abstract class);
第二類是對一個體某一方面的抽象,即形成一個抽象面(interface);
複製程式碼

一個體有可能有多個抽象面。 抽象體與抽象面是有區別的。

物件導向是指,我們考慮問題時,以物件為單位,考慮它的屬性及方法
程式導向是指,我們考慮問題時,以一個具體的流程(事務過程)為單位,考慮它的實現
介面設計與非介面設計是針對複用技術而言的,與物件導向(過程)不是一個問題
複製程式碼

相關文章