面向對象編程(OOP)、面向組件編程(COP)、面向方面編程(AOP)和麪向服務編程(SOP)

一、什麼是面向對象編程(Object-Oriented Programming)? 
java

面向對象編程(Object-Oriented Programming)簡稱OOP技術,是開發計算機應用程序的一種新方法、新思想。過去的面向過程編程經常會致使全部的代碼都包含在幾個模塊中,使程序難以閱讀和維護。在作一些修改時經常牽一動百,使之後的開發和維護難覺得繼。而使用OOP技術,經常要使用許多代碼模塊,每一個模塊都只提供特定的功能,它們是彼此獨立的,這樣就增大了代碼重用的概率,更加有利於軟件的開發、維護和升級。 
在面向對象中,算法與數據結構被看作是一個總體,稱做對象,現實世界中任何類的對象都具備必定的屬性和操做,也總能用數據結構與算法二者合一地來描述,因此能夠用下面的等式來定義對象和程序: 
對象=(算法+數據結構),程序=(對象+對象+……)。 
從上面的等式能夠看出,程序就是許多對象在計算機中相繼表現本身,而對象則是一個個程序實體。 

二、什麼是面向組件編程(Component-Oriented Programming)? 
組件不是一個新的概念,Java中的javaBean規範和EJB規範都是典型的組件。組件的特色在於他定義了一種通用的處理方式。例如,JavaBean 擁有內視的特性,這樣就能夠經過工具來實現JavaBean的可視化。而EJB規範定義了企業服務中的一些特性,使得EJB容器可以爲符合EJB規範的代碼增添企業計算所須要的能力,例如事務、持久化、池等。 
因此,組件比起對象來的進步就在於通用的規範的引入。通用規範每每可以爲組件添加新的能力(就像上面所討論的),但也給組件添加了限制,例如你須要實現EJB的一些接口 
COP比OOP更進一步。一般OOP將數據對象組織到實體中。這種方法具備不少優勢。可是,OOP有一個大的限制:對象之間的相互依賴關係。去掉這個限制的一個好的想法就是組件。組件和通常對象之間的關鍵區別是組件是能夠替代的。 

三、什麼是面向方面編程(Aspect-Oriented Programming)? 
將通用需求功能從不相關類之中分離出來;同時,可以使得不少類共享一個行爲,一旦行爲發生變化,沒必要修改不少類,只要修改這個行爲就能夠。 
AOP就是這種實現分散關注的編程方法,它將「關注」封裝在「方面」中。 

四、什麼是面向服務編程(Service-Oriented Programming)? 
SOP是一種體系結構,目標是在軟件代理交互中得到鬆散耦合。一個服務是一個服務提供者爲一個服務消費者得到其想要的最終結果的一個工做單元。服務者與消費者都以軟件代理表明他們本身的角色。 
    這聽起來有些太抽象,可是SOP確實無處不在。讓咱們在你的住房中找到一個SOP的例子。例如播放一個CD,你能夠將要播放的CD放入CD機中,CD機將爲你播放這張CD,CD機提供了一個CD播放服務。這裏的好處就是你能夠用不一樣的CD機去播放同一張CD。他們能提供一樣的CD播放服務,可是服務質量是不一樣的。 
    SOP的思想明顯不一樣於面向對象的編程,面向對象編程強烈的建議你應該將數據與其操做綁定。所以在面向對象編程風格中,每張CD 有它本身的CD播放機,他們之間不能被拆開。這聽起來很奇怪,可是這就是咱們創建許多已存軟件系統的方式。
而SOP就不同了,爲了減小異構性、互操做性和不斷改變的要求的問題,這樣的體系結構應該提供平臺來構建具備下列特徵的應用程序服務: 
鬆散耦合、位置透明、協議獨立 
    基於這樣的面向服務的體系結構,服務使用者甚至沒必要關心與之通訊的特定服務,由於底層基礎設施或服務「總線」將表明使用者作出適當的選擇。基礎設施對請求者隱藏了儘量多的技術。特別地,來自不一樣實現技術(如 J2EE 或 .NET)的技術規範不該該影響 SOP用戶。若是已經存在一個服務實現,咱們就還應該從新考慮用一個「更好」的服務實現來代替,新的服務實現必須具備更好的服務質量。算法

相關文章
相關標籤/搜索