(转)向对象开发与面向组件开发的区别

通过对SOA、SCA、OSGi、JPF等面向组件理论和技术的理解,整理一篇面向对象开发与面向组件开发的区别

1、面向对象中,对象之间的交互是细粒度的,通过单个消息进行交互; 
面向组件中组件的交互是通过接口连接进行交互,接口内含有多个消息,接口不同则需要适配。 
比如,信件一封一封的送,是对象之间的交互,信件一次性送完是组件交互。

2、组件的粒度比对象要大,在面向对象系统设计中,对象是构建系统的基本建筑材料;面向组件系统开发中,组件是系统的基本建筑块;组件有点类似子系统的概念,把一组相关的对象封装起来对外提供服务;组件的存在增加了信息的隐蔽程度,减少了馈入上层信道的信息数量,从而增加了系统的稳定性;

2、面向对象中强调封装,继承,多态 ;对象是类的实例,说到对象,往往是指源代码级的类的定义及其实现; 在面向组件强调封装,在复用方面更多的是强调黑盒复用。组件中,接口的概念特别被强调。接口是组件的和组件使用者之间的契约;接口的确定使得组件的开发者和使用者得以分开。

3、组件集中关注业务的职责,明确业务边界;对象关注同一业务的所有方面。 
假如业务复杂的话,同一个概念实体,可能包含1000个属性,而这1000个属性可以分类成多个方面, 
用面向对象方法,那么针对这1000个属性的操作,就会封装在这个对象里,结果所有操作因为所针对的属性捆绑,而捆绑,不能达到部分重用。 
组件提供了更好的方式,针对这1000个属性的操作按职责分在不同的业务组件里,同时部分有公用可能的组件也可针对其他业务的提供某些方面的重用。

4、 作为构建系统的基本建筑块,组件需要容器的帮助。容器为组件提供了运行环境,使组件能在一个较高的平台上完成自己最擅长的工作而不用考虑过多的底层细节。在组件中往往要实现一些容器所需的回调方法,来进行容器与组件间的沟通。容器也向组件提供一些公用的接口,使组件能够使用容器提供的服务(事务,安全等等)。容器的存在使得组件的使用者与组件的组装(配置)者得以分开。组件总是一定容器内的组件。由于组件生活在容器中,组件的管理尤其是生命周期的管理就成了容器的职责。生存在容器中,组件的状态(state)、持久性、通信方式也是必须要考虑的一些问题。由此产生了组件的类别。

5、领域模型本身反映了现实世界的根本复杂性,组件针对的是领域模型的某个方面的相关属性和相关操作。就像面向方面思想一样,核心关注的是概念实体本身,方面则是按逻辑相关性分组的相关属性和相关操作。不同类型的实体核心关注的是不一样的,但一定某几个非核心方面存在类似。对于实现来说,可以为每个方面申明一个父类,然后从多个方面继承。

原文地址:http://blog.csdn.net/teamlet/article/details/1995916

(转)向对象开发与面向组件开发的区别

时间: 2024-10-24 05:30:45

(转)向对象开发与面向组件开发的区别的相关文章

面向对象、面向服务、面向组件三种编程模式有什么区别?分别适用于哪些领域的开发?

http://blog.sina.com.cn/s/blog_6d2890600101cwih.html 三个数据后面都缺了一个词,分别是:“编程”.“架构”和“开发”(或“软件工程”). 同时,不是“面向”组件而是“基于”组件. 面向对象编程(Object-Oreinted Programming) 是一种编程范式.指在设计程序时大量运用类实例对象的方式.OOP一旦在项目中被运用,就成了时刻要考虑的东西. 面向服务架构(Service-Oreinted Architecture) 是将软件设计

《纵向切入ASP.NET 3.5控件和组件开发技术》笔记:高效率事件集合对象

在之前讲的几个例子中,使用的是最普通的定义事件方法,比如KingTextBox中事件是这样定义的:/// <summary>/// 获得本书更多内容,请看:/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx/// </summary>public event EventHandler TextChanged;protected virtual void OnTextChanged(EventArgs

饿了么基于Vue2.0的通用组件开发之路(分享会记录)

Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库.今天我们要分享的就是开发 Element 的一些心得. 官网:http://element.eleme.io/#/github:https://github.com/ElemeFE/element ## 设计目的 大部分项目起源都是源于业务方的需求,Element 也是一样.随着公司业务发展,内部开始衍生出很多后台系统,UED 部门也接到越来越多的设计需求,

js组件开发-移动端地区选择控件mobile-select-area

移动端地区选择控件mobile-select-area 由于之前的[js开源组件开发]js手机联动选择地区仿ios 开源git 很受欢迎,于是我又对其进行了一些优化,包括可选的范围变大了,添加了默认空首地址的功能,也添加了更多api参数,首先我们先来看下这次的效果图. 它的github地址请点击https://github.com/tianxiangbing/mobile-select-area 它的demo演示请点击 http://www.lovewebgames.com/jsmodule/m

Vue组件开发分享

在开始本文之前,你可能需要先了解以下相关内容: Vue.js  一款高性能轻量化的MVVM框架 Webpack  前端模块化代码构建工具 Vue组件介绍 基于vue.js高效的双向数据绑定特性,让我们在开发高可用组件时可以更加专注于数据逻辑开发: 忘记DOM操作,忘记事件绑定,让开发的专注力集中于数据上: 1.定义需要使用的数据及类型 2.在合适的时机更新数据 3.在模板上绑定数据与视图的映射关系 4.开放对外调用接口 代码 https://github.com/xiaoyunchen/vue-

[转]详解C#组件开发的来龙去脉

C#组件开发首先要了解组件的功能,以及组件为什么会存在.在Visual Studio .NET环境下,将会有新形式的C#组件开发. 组件的功能 微软即将发布的 Visual Studio .NET 将使程序开发人员获得一个集成开发环境,它不但为开发传统的 C/C++ 应用程序,而且也为令人振奋的Microsoft .NET 组件提供了丰富的工具.这些以管理代码编写.在通用语言运行时构建的组件向开发人员提供了一个全新的混合开发环境,即象 Microsoft Visual Basic 一样容易,而同

慕课网实战—《用组件方式开发 Web App全站 》笔记四-柱状图组件开发

运用HTML5.CSS3.JS流行技术,采用组件式开发模式,开发Web App全站!技术大牛带你统统拿下不同类型的HTML5动态数据报告! <用组件方式开发 Web App全站 > 柱图开发思路 水平柱图开发(HTML的DOM搭建) ???? ???? 水平柱图开发(CSS样式编写) /* 柱状组件样式 */ .h5_component_bar{ } .h5_component_bar .line{ height: 15px; font-size: 12px; line-height: 15p

拖拽的组件开发

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <style> #div1{ width:100px; height:100px; background:red; position:absolut

javascript组件开发之基类继承实现

上一篇文章大概的介绍了一下关于javascript组件的开发方式,这篇文章主要详细记一下基类的编写,这个基类主要是实现继承的功能 为什么要封装基类? 由于这次重构项目需要对各种组件进行封装,并且这些组件的实现方式都差不多,为了便于管理,让代码尽量统一,所以到对组件封装一个base基类(javascript没有类的概念,暂且这样叫吧),关于javascript的oo实现:可以参考这篇文章javascript oo实现:写得很赞,膜拜,我改写的这个基于John Resig的实现方式. 基类的封装方式