當前位置:編程學習大全網 - 源碼下載 - 面向組件編程是什麽?

面向組件編程是什麽?

所有的軟件技術和思想的出現都是為了解決所在的那個年代軟件開發的復雜性,對象技術和組件技術也不例外。當然還有很多其它技術,像DBC(契約式編程)、AOP、MDA等,這些思想都在影響我們設計/實現程序的方式,但無可否認的是,當今最主流的編程技術是對象技術和組件技術。 面向對象技術已經成熟的發展將近20年了,關於這方面的經典書籍和論文也隨處可見。為了解決更大的系統的復雜度,組件技術應運而生,在windows平臺上,組件從最初的動態鏈接庫到COM,在到現在的中間件、.NET,就是組件思想走過的軌跡。

面向對象技術的基礎是封裝--接口與實現分離,面向對象的核心是多態--這是接口和實現分離的更高級升華,使得在運行時可以動態根據條件來選擇隱藏在接口後面的實現,面向對象的表現形式是類和繼承。面向對象的主要目標是使系統對象化,良好的對象化的結果,就是系統的各部分更加清晰化,耦合度大大降低。

面向組件技術建立在對象技術之上,它是對象技術的進壹步發展,類這個概念仍然是組件技術中壹個基礎的概念,但是組件技術更核心的概念是接口。組件技術的主要目標是復用--粗粒度的復用,這不是類的復用,而是組件的復用,如壹個dll、壹個中間件,甚至壹個框架。壹個組件可以有壹個類或多個類及其它元素(枚舉、)組成,但是組件有個很明顯的特征,就是它是壹個獨立的物理單元,經常以非源碼的形式(如二進制,IL)存在。壹個完整的組件中壹般有壹個主類,而其它的類和元素都是為了支持該主類的功能實現而存在的。為了支持這種物理獨立性和粗粒度的復用,組件需要更高級的概念支撐,其中最基本的就是屬性和事件,在對象的技術中曾壹度困擾我們的類之間的相互依賴問題/消息傳遞問題,迄今為止我所知道最好的解決方案就是事件。要理解組件思想,首先要理解事件的思想和機制。

我壹直堅持以為,壹個組件的外形/外貌應該是簡單的、應該是清晰的、沒有冗余的東西、也沒有無關緊要的東西,這個外貌通過接口來描述,接口中可以發布事件、屬性和方法。這三種元素就足以描述壹個組件外貌的所有特征。比如,我曾經用封裝的壹個完成端口組件,其外貌接口中只有四個方法,三個事件,三個屬性而已,而該組件的內部實現卻有幾千行代碼。所以在設計壹個組件的時候,需要做很多的權衡,哪些需要通過接口暴露出來,哪些應當作為私有實現。有時,妳會處於兩難的境地,因為讓組件更容易使用,所以需要給出很多默認的參數,但為了使該組件更通用,妳又需要暴露更多的屬性可以讓人設定、暴露更多的方法和事件滿足更復雜的功能。妳需要抉擇,妳需要權衡。難怪有人會說,軟件的設計更像是藝術,因為藝術的美在於恰當的抉擇和平衡。我的經驗是,在保持低耦合度的前提下,組件的接口足以對付當前的應用就好。如果日後需要加強功能,那就重構然後增強它,這是很容易的,因為早就說了嘛,保持組件的低耦合度。

需要說明壹下的是,我們通常所說的控件(如按鈕)也是壹種組件,可以這麽認為,控件是壹種具有UI形式的組件。插件(Addin/Plugin)也是壹種特殊的組件,插件的單獨存在是沒有意義的,它是由兼容該插件協議的框架所使用。

最後強調壹點,組件的目標是粗粒度的復用,組件的核心是接口。

  • 上一篇:數字密碼技術源代碼
  • 下一篇:初學編程
  • copyright 2024編程學習大全網