淺談面向對象中類、抽象類、接口劃分

基本概念

面向對象編程(Object Oriented Programming,OOP)是一種編程架構,重塑了編程方式。
OOP三個主要目標:重用性、靈活性和擴展性。
OOP=對象+類+繼承+多態+消息,其中核心概念是類和對象。編程

類、抽象類、接口劃分

類是面向對象編程過程當中必需會用到的,可是抽象類與接口卻不必定。不少時候或者不少開發人員對抽象類與接口的選取或理解上有些疑惑,由於接口中能作的東西抽象類基本都能完成,那爲何還要去多寫一個接口文件再寫一個類去實現呢?雖然接口能夠多重繼承,但遇到的也能夠拆分或組合,能少寫一個文件的事卻整的這麼麻煩呢?還有在類中方法明明沒有使用到對象的屬性爲何不使用靜態方法呢?使用靜態方法內外調用方便,爲何還要寫成非靜態而後不得不去建立一個對象調用呢?架構

相似的問題會很是多,實際上都是爲了定義後續開發維護的規範。我總結的是開發時所能看到的動做與功能所適應的對象範圍,將決定你開發代碼共用和規範的精華。ide

類主要是定義某個對象的具體動做與功能,是對象處理的最小單元。
類比較適合對象的獨有動做與功能處理的抽取或實現,相同的動做與功能交給基類或其它類處理或實現。
類在實際開發過程當中,不多是獨立完成一些功能或動做的,通常須要藉助其它處理類來完成,在這過程當中須要類具有對象調用的特色,改善其它處理類的通用性。對象

抽象類

抽象類主要是定義某些對象集的基本動做與功能集,其中有部分動做與細節須要子類完成。
抽象類比較適合同類別的對象集抽取,把相同的處理方法或功能抽取出來,能實現的就實現,不能實現的給定義。
抽象類可理解爲縱向串聯某些對象集,偏集中完成總體功能,適用同類別的對象集。
好比商品處理,商品有不種類,但都有:庫存、名字、規格、生產日期、生產地、價格等,和庫存處理、規格處理等,抽象一個商品基類實現商品的基本動做與功能,提供商品子類須要完成的抽象方法:損耗處理、檢驗處理、銷售處理等。全部子商品只須要完成抽象方法便可共享商品處理的基本動做與功能。繼承

接口

接口主要是定義某些動做或功能的基本方法結構集,並不明確哪些對象。
接口比較適合有匹配的處理包,有點像黑匣子,你不須要知道內部處理了什麼,只需實現對外提供接口方法,而後直接調用處理包就能夠得到想要的結果。
接口可理解爲橫向穿插某些對象集,偏集中完成穿插部分的功能與細節,適用相同動做或功能的對象集。
好比支付處理,支付通常都須要對接三方支付接口,基本上全部的三方支付接口都會提供:建立支付訂單、取消支付、支付回調、查詢訂單;在這裏並不須要知道支付的是什麼訂單,全部的訂單隻須要實現支付接口方法:獲取訂單號、獲取支付金額、獲取支付商品簡稱、獲取支付超時時間、更新支付狀態;支付處理包只須要實現具體的:建立支付訂單、取消支付、支付回調、查詢訂單。若是哪裏須要支付,直接實現支付接口基本方法,而後調用支付處理包就能夠快速完成支付功能。接口

相關文章
相關標籤/搜索