面向過程、面向對象、面向服務、面向切面

 

轉載請註明原文地址: http://www.javashuo.com/article/p-xogmqaok-eb.htmlhtml

 

一:從 面向過程 走向 面向對象

    在早期進行軟件開發的時候,計算機配置低、內存小,節省內存成了首要目標,哪怕是運行的時間長些也無所謂,由此誕生的「面向過程編程」採起「時間換空間」的策略,少存儲、運算過程當中涉及到的數據都在內存中暫存,直至運算結束。編程

   隨着技術的發展,存儲再也不成爲瓶頸。相反,如何更好地模擬世界、表達世界、提升系統的可維護性等問題越顯重要,因而面向對象設計應運而生。網絡

   到目前爲止,運行在PC上的程序因爲不太須要考慮硬件的限制,而系統的可維護性等方面卻要求很高,通常採用面向對象方式進行開發;函數

   而對於內存限制有較高要求的嵌入式系統,則大多采用面向過程方式進行設計編程。spa

 

二:面向過程編程——爲解決問題而生,一個函數一個目的

    面向過程編程是 將要解決的問題分解爲一個個要解決的 步驟,而後 用函數 把這些步驟一步一步的實現,而後再一一調用函數,解決問題。設計

    例如:五子棋遊戲htm

  一、開始遊戲對象

  二、黑子先走,blog

  三、繪製畫面,繼承

  四、判斷輸贏,

  五、輪到白子,

  六、繪製畫面,

  七、判斷輸贏,

  八、返回步驟2,

  九、輸出最後結果。

  把上面每一個步驟用分別的函數來實現,問題就解決了。

 

三:面向對象編程——將解決問題的過程抽象爲多個對象協同做戰的過程

     面向對象編程則是把構成問題的事務分解成各個 對象,而創建對象的目的也不是單純爲了完成一個個步驟,而是爲了描述某個事物在解決整個問題的過程當中所發生的行爲,對象中可能不僅一個行爲(函數),還會有其餘的用於描述或者解決其餘問題的屬性、行爲。

    面向對象的設計則是從另外的思路來解決問題。整個五子棋能夠分爲:

  一、棋子對象,這兩方的行爲是如出一轍的,

  二、棋盤對象,負責繪製畫面,

  三、規則對象,負責斷定諸如犯規、輸贏等。

    

   面向對象三大特性:封裝、繼承、多態

    封裝:將類的某些信息隱藏在類內部,不容許外部程序直接訪問,而是經過該類提供的方法來實現對隱藏信息的操做和訪問

    繼承:繼承是類與類的一種關係,子類擁有父類的全部屬性和方法(除了private修飾的屬性不能擁有)從而實現了實現代碼的複用

    多態:主要指引用多態、方法多態。

             引用多態是指:父類引用能夠指向本類對象,也可指向子類對象;

             方法多態:子類中能夠重寫父類的方法,在調用方法時根據引用指向的子類對象決定調用哪一個具體的方法。

 

  面向對象五大基本原則

    單一職責原則:一個類的功能要單一,不能一應俱全。

 

    開放封閉原則:一個模塊在擴展性方面應該是開放的而在更改性方面應該是封閉的,好比:一個網絡模塊,原來只服務端功能,而如今要加入客戶端功能,那麼應當在不用修改服務端功能代碼的前提下,就可以增長客戶端功能的實現代碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。

 

    里氏替換原則:子類應當能夠替換父類並出如今父類可以出現的任何地方。好比:公司搞年度晚會,全部員工能夠參加抽獎,那麼不論是老員工仍是新員工,也不論是總部員工仍是外派員工,都應當能夠參加抽獎,不然這公司就不和諧了。

 

    依賴倒置原則:具體依賴抽象,上層依賴下層。好比:假設B是較A低的模塊,但B須要使用到A的功能,這個時候,B不該當直接使用A中的具體類: 而應當由B定義一抽象接口,並由A來實現這個抽象接口,B只使用這個抽象接口:這樣就達到了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴於B定義的抽象接口。經過上層模塊難以免依賴下層模塊,假如B也直接依賴A的實現,那麼就可能 形成循環依賴。一個常見的問題就是編譯A模塊時須要直接包含到B模塊的cpp文件,而編譯B時一樣要直接包含到A的cpp文件。

 

    接口分離原則:模塊間要經過抽象接口隔離開,而不是經過具體的類強耦合起來。

 

四:面向服務的誕生

    面向服務編程是基於「系統開發」層面而言的。若是是面向過程、面向對象編程是爲了解決一個問題,那麼面向服務開發則是爲了實現一個系統、一個程序。

    一個系統或應用程序的功能是 由一些鬆耦合而且具備統一接口定義方式的組件(也就是 服務) 提供的,一個功能由一個服務來提供,多個服務組合而成系統/程序

 

五:面向切面編程(AOP)

    將通用需求功能從不相關類之中分離出來,成爲一個行爲。

    同時,使得不少類共享一個行爲,一旦行爲發生變化,沒必要修改不少類,只要修改這個行爲就能夠。

    切面的意思就是:將一系列類做爲平面,有共享行爲的類以「行爲」爲切點相切

相關文章
相關標籤/搜索