快速业务通道

智能数据使Swing保持简单 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
是重画(repaint),这一操作 强制渲染器重新渲染更新的单元,即依次检索并显示新数据值。

这种间接的一个结果是有统一的客户机数据高速缓存的能力。假定组件使用来自中央客户 机高速缓存的 iData 间接和 DataObjects ,在整个应用程序中,所有数据编辑将动态持久 存储。这极大地简化了负责显示动态数据的交易系统和其它客户机。

示例:虚拟列

虚拟列体现了 iData 技术的灵活性。虚拟列是一个含有数据的列(这些数据没有显式地 包含在模型中,而是由多个字段组合而成)。设想称为 profit 的列,它将显示 price 和 cost 之间的差额。要创建这个列,需要创建一个 ImmutableIData 实现,其中 getData() 返回 price 和 cost 之间的差额。

清单 4. 利润虚拟列

public class BicycleProfitImmutableIData extends DefaultImmutableIData {   ...   public Object getData()   {    //return the difference of the price and cost field from the DataObject    return new Double(bicycle.getPrice() - bicycle.getCost());   } }

使用标准模型创建这种类型的虚拟列将需要大量逻辑。首先,要使用正确的值填充该模型 。当编辑 price 或 cost 时,可能会出现一些问题:在整个应用程序中需要复杂和经常容易 出错的逻辑来更新 profit 值。有了 iData 技术,编辑 price 或 cost 时,无须任何更新 操作。动态地存在持久性。

智能数据使Swing保持简单(6)

时间:2011-04-16 IBM Jonathan Simon

使用 iData 对象作为构造模块

间接层作为一组 iData 对象来实现,这样会带来实质性的好处。例如,附加两个数据值 的 PriceAndCost 显示也可以使用组合来实现。不是直接从新的 CompositePriceAndCost 显 示中的 DataObject 检索这两个值,而是可以使用以前编写的 BicyclePriceImmutableIData 和 BicycleCostImmutableIData 对象。通过从两个 iData 层实现(由一个分隔符来分隔, 在本例中,分隔符为斜杠)检索值,然后附加这两个值,这样 getData() 就创建了返回字符 串。最终的 getData() 方法类似于这样:

清单 5. PriceAndCostImmutableIData 的组合实现

public Object getData() {    // append the price, a slash, and the cost using pre-built iData    // implementations      return new String( (String)priceIData.getData() + " / " +      (String)costIData.getData() ); }

这种组合不同 iData 实现的能力提高了代码重用和灵活性。可以通过对已有 iData 实现 进行不同的组合来开发新的 iData 实现。由于这种组合有利于运行时 iData 实现的动态组 合,这意味着需要更少的具体类和更大的灵活性。工具箱含有一些实现简单的基于组合的 iData 对象的助手类,包括前缀和后缀字符串修饰符 iData 实现,这些实现使用任意一个带 有后缀和/或前缀的 iData 对象来修饰 iData 的字符串表示。

基于反射(reflection)的 ImmutableIData 实现(UniversalImmutableIData)

iData 方法的主要缺陷之一是类的数目过多。在大型应用程序中,iData 类的数目可能会 迅速变得难以控制。大多数 iData 层实现重复相同的顺序,在这一顺序里, getData() 请 求被重定向到 DataObject 中的 get[FieldName]() 方法。通常,可以使用反射来实现这一 点。工具箱含有一个基于反射的 ImmutableIData 实现的缺省实现,名为 UniversalImmutableIData 。 UniversalImmutableIData 使用一个 DataObject 和一个字段 名作为初始化参数。在内部,它获取字段名,然后检索 get[FieldName]() 方法,当调用 getData() 或 toString() 方法时会调用 get[FieldName]() 方法。这种方法简化了开发, 同时减少了类的数目,所付出的代价只

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号