快速业务通道

IOU设计模式介绍及应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
proxy, Method method, Object[] args) throws Throwable    {      Object obj;      if( method.getDeclaringClass() == Iou.class )      {        // 如果方法来自于 Iou 类声明,则将本 IOU 对象设为反射执行的目标对象        obj = this;      }      else      {        // 调用非 Iou 类的方法,检查此 IOU 对象是否已经终止,未终止则保持等待直至终止        if( !this.closed() )        {          this.standBy();        }        // 赎回结果对象,并设为反射执行的目标对象        obj = this.redeem();      }      // 在目标对象上执行 invoke 调用      return method.invoke(obj, args);    } }

IOU设计模式介绍及应用(6)

时间:2011-06-29 IBM / 王忠平 何平

扩展 IOU 模式带来了更好的用户体验,在使用方法上也有所改进。清单 5 和清单 6 改进后的实现分别是清单 8 和清单 9。

清单 8. 被调方法的实现模型(改进后)

public Foo method( … ) {    // 首先创建扩展的 escrow 对象 , 指定结果类型为 Foo    Escrow escrow = new RealIouEscrowEx(Foo.class);    // 启动异步服务,并关联扩展 escrow 对象    ……    // 发行 escrow 发行的 Iou 欠条,这里可以安全的类型转换到 Foo 再返回    return (Foo)escrow.issueIou(); }

清单 9. 调用者的实现模型(改进后)

// 调用 method 方法,获得 Foo 对象(其实是一    // 个同时代理了 Iou 接口和 Foo 接口的代理对象)    Foo foo = method();    // 执行其他事务    ……    // 可以直接在 foo 上调用 bar,效果完全等    // 价于在真正的返回对象上调用 bar 方法    foo.bar()    …… 

实例演示

接下来通过一个实例来演示 IOU 设计模式的实际应用,例子描述了一位女管家如何通过 IOU 模式来更加有效地处理家务的故事。

涉及的接口有:顶层接口 Processable 及其子接口 Clothes 和 Food。Processable 接口声明了 process 方法,子接口 Food 声明了 addSpice 方法。Clothes 经过清洗(process)变得干净;Food 经过烹饪(process)变得可食用,而且 Food 还能够添加调味香料(addSpice)。具体实现类为 ChothesImpl 和 FoodImpl。

涉及的异步服务类是 AsyncService,它以异步方式处理 Processable 对象并调用其 process 方法,并且最后会终止 Escrow 对象以结束 Iou 债务。实例中的 AsyncService 是以后台线程为载体,但是实际应用中用户可以选择任意的异步机制。

IOU设计模式介绍及应用(7)

时间:2011-06-29 IBM / 王忠平 何平

最后的女管家类是 HouseKeeper。她需要进行的家务包括洗衣、做饭及其他,其中可以并行执行是洗衣和做饭,因为有洗衣机和电饭煲可以帮忙,剩下的则必须一件一件地进行。具体实现见清单 10。

清单 10. HouseKeeper 类

public class HouseKeeper {    public static void main(String args[])    {      // 初始化待处理的衣服和食物对象      Clothes clothesToWash = new ClothesImpl();      Food foodToCook = new FoodImpl();      // 设定洗衣事务      Iou iou = wash(clothesToWash);      // 继续做其他事情      doSomethingOther();      // 设定烹饪事务      Food foodCooked = cook(foodToCook);      // 继续做其他事情      doSomet

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号