=
https://zhidao.baidu.com/question/1604200579819286867.html
=
所有的软件技术和思想的出现都是为了解决所在的那个年代软件开发的复杂性,对象技术和组件技术也不例外。当然还有很多其它技术,像DBC(契约式编程)、AOP、MDA等,这些思想都在影响我们设计/实现程序的方式,但无可否认的是,当今最主流的编程技术是对象技术和组件技术。 面向对象技术已经成熟的发展将近20年了,关于这方面的经典书籍和论文也随处可见。为了解决更大的系统的复杂度,组件技术应运而生,在windows平台上,组件从最初的动态链接库到COM,在到现在的中间件、.NET,就是组件思想走过的轨迹。
面向对象技术的基础是封装--接口与实现分离,面向对象的核心是多态--这是接口和实现分离的更高级升华,使得在运行时可以动态根据条件来选择隐藏在接口后面的实现,面向对象的表现形式是类和继承。面向对象的主要目标是使系统对象化,良好的对象化的结果,就是系统的各部分更加清晰化,耦合度大大降低。
面向组件技术建立在对象技术之上,它是对象技术的进一步发展,类这个概念仍然是组件技术中一个基础的概念,但是组件技术更核心的概念是接口。组件技术的主要目标是复用--粗粒度的复用,这不是类的复用,而是组件的复用,如一个dll、一个中间件,甚至一个框架。一个组件可以有一个类或多个类及其它元素(枚举、)组成,但是组件有个很明显的特征,就是它是一个独立的物理单元,经常以非源码的形式(如二进制,IL)存在。一个完整的组件中一般有一个主类,而其它的类和元素都是为了支持该主类的功能实现而存在的。为了支持这种物理独立性和粗粒度的复用,组件需要更高级的概念支撑,其中最基本的就是属性和事件,在对象的技术中曾一度困扰我们的类之间的相互依赖问题/消息传递问题,迄今为止我所知道最好的解决方案就是事件。要理解组件思想,首先要理解事件的思想和机制。
我一直坚持以为,一个组件的外形/外貌应该是简单的、应该是清晰的、没有冗余的东西、也没有无关紧要的东西,这个外貌通过接口来描述,接口中可以发布事件、属性和方法。这三种元素就足以描述一个组件外貌的所有特征。比如,我曾经用封装的一个完成端口组件,其外貌接口中只有四个方法,三个事件,三个属性而已,而该组件的内部实现却有几千行代码。所以在设计一个组件的时候,需要做很多的权衡,哪些需要通过接口暴露出来,哪些应当作为私有实现。有时,你会处于两难的境地,因为让组件更容易使用,所以需要给出很多默认的参数,但为了使该组件更通用,你又需要暴露更多的属性可以让人设定、暴露更多的方法和事件满足更复杂的功能。你需要抉择,你需要权衡。难怪有人会说,软件的设计更像是艺术,因为艺术的美在于恰当的抉择和平衡。我的经验是,在保持低耦合度的前提下,组件的接口足以对付当前的应用就好。如果日后需要加强功能,那就重构然后增强它,这是很容易的,因为早就说了嘛,保持组件的低耦合度。
需要说明一下的是,我们通常所说的控件(如按钮)也是一种组件,可以这么认为,控件是一种具有UI形式的组件。插件(Addin/Plugin)也是一种特殊的组件,插件的单独存在是没有意义的,它是由兼容该插件协议的框架所使用。
最后强调一点,组件的目标是粗粒度的复用,组件的核心是接口。
=
=
=
相关推荐
软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,这一进程不仅反映了编程技术的不断进步,更是软件工程哲学的深度演化,旨在提升软件的可维护性、可扩展性和重用性。每一步转变,都是对前一代...
基于 OSGi 的面向服务的组件编程呆呆呆呆呆呆地
组件编程技术是软件开发中的一种重要方法,它提倡软件重用,通过构建可复用的、功能完整的程序模块,提高开发效率和软件质量。组件技术是分布式计算和Web服务的基础,尤其是在网络应用中,组件通常被称为中间件。...
### Java语言:什么叫面向接口编程 #### 接口的基本概念 在Java编程中,接口(Interface)是一种重要的抽象数据类型,它定义了一组方法签名,这些方法由实现该接口的类来具体实现。接口可以看作是一种契约或者协议...
2. **解耦合**:面向接口编程的主要优点是实现了组件间的解耦。这意味着实现类可以独立于它们的使用者发展,因为它们之间的交互是通过接口进行的。这样,即使实现类发生改变,只要接口保持不变,调用者就不需要修改...
总的来说,C# 的组件化编程技术是通过面向对象的设计原则,如类、对象、继承和接口,将大型系统分解为可管理和可重用的部分。这种技术提高了软件开发的效率,降低了维护成本,并有助于创建更稳定、更灵活的软件解决...
在组件编程中,程序员通常采用面向接口编程,这样可以解耦组件之间的依赖关系,提高系统的灵活性和可扩展性。 4. **组件模型**: 常见的组件模型有COM(Component Object Model)、.NET Framework的Assembly和CLR...
是一本很好的讲述面向组件/容器编程思想的书。讲述J2EE等方面的知识。
面向接口编程是一种重要的软件设计原则,它强调程序的组件应通过接口进行交互,而不是直接依赖于具体的实现。这种编程范式有助于提高代码的灵活性、可维护性和可测试性。下面我们将详细探讨面向接口编程的思想基础、...
《基于OSGi的面向服务的组件编程》 OSGi(Open Services Gateway Initiative)是一种开放的服务规范,自1999年由OSGi联盟提出,最初目标是为嵌入式设备提供一个通用的软件运行平台,以屏蔽硬件和操作系统的差异,...
《Delphi面向对象编程思想》是一本专注于介绍如何在Delphi环境下运用面向对象编程技术的专业书籍。这本书由刘艺撰写,旨在帮助读者深入理解和熟练掌握面向对象编程的基本概念、原则和技巧,以及如何在实际的Delphi...
### Delphi面向对象编程思想 在探讨Delphi的面向对象编程(Object-Oriented Programming,简称OOP)思想之前,我们需要明确几个概念:面向对象编程是一种编程范式,它使用“对象”来设计软件和实现计算机程序。这些...
《Delphi面向对象编程思想刘艺》是一本深入讲解Delphi编程中面向对象技术的专业书籍。作者刘艺以其丰富的经验和深厚的理论功底,系统地阐述了面向对象编程的基本概念、原则以及在Delphi中的实际应用。这本书对于想要...
02-React面向组件编程-基本使用与理解、组件实例的三大核心属性与事件处理
面向对象编程(Object-Oriented Programming,简称OOP)是一种广泛应用的编程范式,它将程序设计中的实体抽象为对象,通过对象之间的交互来实现功能。这种编程方式使得代码更易于理解和维护,同时也增强了代码的复用...
面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它基于“对象”的概念,强调数据和操作数据的方法结合在一起,形成独立的、可复用的单元。刘艺老师的"面向对象编程思想"课程或资料,很...
《Delphi面向对象编程思想》是由刘艺编著的一本深入探讨面向对象编程在Delphi环境中的应用的书籍。这本书因其深入浅出的讲解和实用的示例,曾深受程序员们的喜爱,虽然现在已经绝版,但其PDF版本仍然在开发者之间...