1.面向组件编程
提到面向组件就不得不提到COM(Component Object Model),即组件对象模型,它是微软提出的一套开发软件的方法与规范。它也代表了一种软件开发思想,那就是面向组件编程(COP,Component-Oriented Programming)的思想。
众所周知,由C到C++,实现了由面向过程编程到面向对象编程的过渡。而COM的出现,又引出了面向组件的思想。其实,面向组件思想是面向对象思想的一种延伸和扩展。
在以前,应用程序总是被编写成一个单独的模块,就是说一个应用程序就是一个单独的二进制文件。后来在引入了面向组件的编程思想后,原本单个的应用程序文件被分隔成多个模块来分别编写,每个模块具有一定的独立性,也应具有一定的与本应用程序的无关性。一般来说,这种模块的划分是以功能作为标准的。例如,一个网上办公管理系统,从功能上说需要包含网络通信、数据库操作等部分,我们可以将网络通信和数据库操作的部分分别提出来做成两个独立的模块。那么,原本单个的应用程序就分隔成了三个模块:主控模块、通信模块和数据库模块。而这里的通信模块和数据库模块还可以做得使其具有一定的通用性,那么其他的应用程序也就可以利用这些模块了。这样做的好处有很多,比如当对软件进行升级时,只要对需要改动的模块进行升级,然后用重新生成的一个新模块来替换掉原来的旧模块(但必须保持接口不变),而其他的模块可以完全保持不变。这样,软件升级就变得更加方便,工作量也更小。
面向组件编程思想可以用四个字概况:模块分隔。这里的“分隔”有两层含义,第一就是要“分”,也就是要将应用程序(尤其是大型软件)按功能划分成多个模块;第二就是要“隔”,也就是每一个模块要有相当程度的独立性,要尽量与其他模块“隔”开。这四个字是面向组件编程思想的精华所在,也是COM的精华所在,理解了这四个字,也就真正理解了面向组件编程的思想。
2.面向组件开发的编程语言
面向组件技术建立在对象技术之上,它是对象技术的进一步发展,类的概念仍然是组件技术中一个基础概念,但是组件技术更核心的概念是接口。组件技术的主要目标是复用——粗粒度的复用,这不是类的复用,而是组件的复用,如一个dll(动态链接库)、一个中间件,甚至一个框架。
VB、PB、C++ Builder/Delphi、Java等都是面向组件开发的语言,一个组件的外形/外貌应该是简单的、清晰的、无冗余的、简洁的,这个外貌通过接口来描述,接口中可以发布事件、属性和方法。这三种元素就足以描述一个组件外貌的所有特征。
3.面向组件编程的主要特点
1)理解组件
组件不是一个新的概念,Java中的JavaBean规范和EJB规范都是典型的组件。组件的特点在于它定义了一种通用的处理方式。例如,JavaBean拥有内视的特性,这样就可以通过工具来实现JavaBean的可视化。(www.xing528.com)
组件较于对象的进步就在于通用的规范的引入。通用规范往往能够为组件添加新的能力,但也给组件添加了限制。
2)组件的粒度
组件的粒度是和系统的架构息息相关的。组件的粒度确定了,系统的架构也就确定了。在小规模的软件中,可能组件的粒度很小,仅相当于普通的对象,但是对于大规模的系统来说,一个组件可能包括几十,甚至上百个对象。因此,对使用COP技术的系统来说,需要正确地定义组件的粒度。较好的定义粒度的方法是对核心流程进行分析。
3)针对接口
接口和实现分离是COP的基础,没有接口和实现的分离,就没有COP。接口的高度抽象特性使得各个组件能够被独立地抽取出来,而不影响到系统的其他部分。
接口和实现分离有以下4个好处:
(1)在模块/组件/对象之间解耦。
(2)轻松地实现抽换,而不用修改客户端。
(3)用户只需要了解接口,而不需要了解实现细节。
(4)增加了重用的可能性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。