您现在的位置: 天极网 > 开发频道 > 动态扩展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订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众