Java应用的动态扩展

这里所谓的可扩展应用,是指这样的编程语言或者系统,它可以在不修改现有系统整体或任意一部分功能的情况下,扩展自身的功能。对于传统的编程语言,比如Cobol、C、C++,如果要为它们的应用增加新功能,程序员必须重新编辑、编译和发布程序,因为这些语言都是静态链接的语言,不具备动态添加功能的机制(也就是说,生成执行代码的时候,所有的程序代码必须事先准备妥当)。Java应用的可扩展能力突破了这些限制。 
  
  Java应用的可扩展功能包含了允许动态地定义新的数据类型以及允许用户插入自己的程序例程的能力。这一切是如何实现的呢?下面我们通过实例来了解具体的实现过程。 
  
  普通应用的扩展 
  
  在Java中,扩展性源于继承,具体手段或者是扩展一个类,或者是实现一个接口。Java接口的主要用途就在于此。(Java接口定义了一组方法,但不包含实现。实现某个接口的类必须实现该接口定义的所有方法,因而也就遵循某种确定的行为模式。) 
  
  为什么说这个功能对于普通程序来说也很重要呢?如果一个程序是可以动态扩展的,用户就不必再为了添加新功能而去修改源程序。这就避免了搞乱原有的代码,使得用户能够专注于自己的那一部分代码。此外,程序不必为了引入新功能而重新启动,这对于那些需要不间断运行的程序来说无疑是一个福音。 
  
  为进一步了解Java程序的动态扩展技术,我们来看一个例子。一家快速增长的保险公司想要用计算机管理它的报价系统。这家公司现有两个产品:人寿保险(lifecare)和医疗保险(medicare)。根据保额、期限、客户年龄和保险产品的不同,月保险费用的计算方法也不同。系统应该能够在不修改原有代码的情况下,引入保险公司推出的其他产品。为现有产品设计的类模型如图一所示。 
     
  当一个客户试图获取某种保险产品的报价时,系统创建一个对应该产品类型的对象,调用该对象的calculatePremium()方法,根据指定产品的计算方法计算出保险费用。系统利用一个XML文件(或属性文件)描述现有产品信息,比如保险产品的名称和相应的类名称。XML文件如Listing 1所示。 
  
  【Listing 1:描述产品信息的XML文件】
     
  系统从XML文件读取指定产品的类的全称,动态地创建对象。然后,系统调用calculatePremium(),根据指定的保额、期限和客户年龄,按照特定产品的计算逻辑计算出精确的保险费。
  现在我们来看看系统如何动态地装入对象。在把类装入内存和创建特定产品类型的对象时,系统用到了Java类库java.lang.Class。Class类的实例或者代表着Java应用中的一个类,或者代表着一个接口。在后台,Java虚拟机(JVM)常常利用Class类操作Java类;然而,用户程序也同样可以通过Class类的实例操作Java类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值