標籤:blog http 使用 strong os art
通過對SOA、SCA、OSGi、JPF等面向組件理論和技術的理解,整理一篇物件導向開發與面向組件開發的區別。
1、物件導向中,對象之間的互動是細粒度的,通過單個訊息進行互動;
面向組件中組件的互動是通過介面串連進行互動,介面內含有多個訊息,介面不同則需要適配。
比如,信件一封一封的送,是對象之間的互動,信件一次性送完是組件互動。
2、組件的粒度比對象要大,在物件導向系統設計中,對象是構建系統的基本建築材料;面向組件系統開發中,組件是系統的基本建築塊;組件有點類似子系統的概念,把一組相關的對象封裝起來對外提供服務;組件的存在增加了資訊的隱蔽程度,減少了饋入上層通道的資訊數量,從而增加了系統的穩定性;
2、物件導向中強調封裝,繼承,多態 ;對象是類的執行個體,說到對象,往往是指原始碼級的類的定義及其實現; 在面向組件強調封裝,在複用方面更多的是強調黑盒複用。組件中,介面的概念特別被強調。介面是組件的和組件使用者之間的契約;介面的確定使得組件的開發人員和使用者得以分開。
3、組件集中關注業務的職責,明確業務邊界;對象關注同一業務的所有方面。
假如業務複雜的話,同一個概念實體,可能包含1000個屬性,而這1000個屬性可以分類成多個方面,
用物件導向方法,那麼針對這1000個屬性的操作,就會封裝在這個對象裡,結果所有操作因為所針對的屬性捆綁,而捆綁,不能達到部分重用。
組件提供了更好的方式,針對這1000個屬性的操作按職責分在不同的業務組件裡,同時部分有公用可能的組件也可針對其他業務的提供某些方面的重用。
4、 作為構建系統的基本建築塊,組件需要容器的協助。容器為組件提供了運行環境,使組件能在一個較高的平台上完成自己最擅長的工作而不用考慮過多的底層細節。在組件中往往要實現一些容器所需的回調方法,來進行容器與組件間的溝通。容器也向組件提供一些公用的介面,使組件能夠使用容器提供的服務(事務,安全等等)。容器的存在使得組件的使用者與組件的組裝(配置)者得以分開。組件總是一定容器內的組件。由於組件生活在容器中,組件的管理尤其是生命週期的管理就成了容器的職責。生存在容器中,組件的狀態(state)、持久性、通訊方式也是必須要考慮的一些問題。由此產生了組件的類別。
5、領域模型本身反映了現實世界的根本複雜性,組件針對的是領域模型的某個方面的相關屬性和相關操作。就像面向方面思想一樣,核心關注的是概念實體本身,方面則是按邏輯相關性分組的相關屬性和相關操作。不同類型的實體核心關注的是不一樣的,但一定某幾個非核心方面存在類似。對於實現來說,可以為每個方面申明一個父類,然後從多個方面繼承。
原文地址:http://blog.csdn.net/teamlet/article/details/1995916