首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 开发频道>动态扩展Java应用

动态扩展Java应用

2001-11-26 16:24作者:QQ新人类出处:yesky责任编辑:方舟


  数据库/基于XML的类名

  想象一下,如果你将类的名字存放在一个数据库表、XML文件或者是一个纯文本文件时,会出现什么情况?在加入新的价格计划时,你只需要创建一个新的类,并且将它放到一个程序可以找到的地方,然后在数据库表或者文件中加入一个记录就可以了。这样在一个新的标价计划推出时,你就不必每次修改Trade类。这里我将使用纯文本文件来说明,因为这是最简单的方法。在一个真正的系统中,我将建议使用数据库或者是一个XML文件,因为它们更加灵活。该文本文件如下所示:

  文件名: PricingPlans.txt

1,string_interfaces.PricingPlan20
2,string_interfaces.PricingPlan1510
3,string_interfaces.PricingPlan8
4,string_interfaces.PricingPlan10

  现在你就可以创建一个PricingPlanFactory类,它将可以根据传入的PlanId来返回一个IPricingPlan实例。这个类读取和分析该文本文件至一个Map中,这样它就可以很方便地根据PlanId进行查找。要注意的是,你也可以修改PricingPlanFactory类以使用一个数据库或者XML文件。

  你可以重新设计Customer类,以便返回IPricingPlan实例而不是PlanId。这样的设计要比返回一个PlanId好,因为其它的类将不需知道它们必须传送PlanId到PricingPlanFactory()方法。这些类不需知道PricingPlanFactory的任何东西;它们只使用所需的IPricingPlan实例就可以了(前面我使用这个设计的原因是这样更便于表达我的观点)。

  这些修改都可以在这篇文章的源代码包中的pricing_plan_factory package找到。

  要注意的方面

  在这篇文件附带的源代码包中(DynamicJavaSource.zip),每个pachage都包含有一个Test类。以下的表描述了这些包中包含有那些东西:

  Package 描述

  no_interfaces 没有使用interfaces的例子

  hard_coded_interfaces 使用interfaces,但是类名写入到源代码中的例子

  string_interfaces 使用interfaces,类名以字符串的形式写到源代码中的例子

  pricing_plan_factory 使用一个文本文件来得到一个类名的例子

  对于类载入的方面,有个问题要注意:类载入的工作有时会出现意外。例如,如果调用forName()方法的类是一个扩展,将不会在CLASSPATH的目录中搜索这个被动态载入的类。如果你想了解关于这个问题的深入讨论或者ClassNotFoundExceptions的一些意外,你可以参考http://java.sun.com/products/jdk/1.3/docs/guide/extensions/index.html。

  你还要注意本文末提到的一个技巧,就是为你的接口加上版本号,以避免当你的程序修改时,令动态扩展无效。
共6页。 9 1 2 3 4 5 6 :

关注此文的读者还看过:

返回开发频道首页

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络