快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

IOU设计模式介绍及应用

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

原理

IOU 思想是人们在处理日常债务关系时行之有效的一种方法,即:

债务人通过可靠的第三方保管账户,向债权人发放 IOU 债务凭证;

债务人通过向第三方保管账户提交结果以终止 IOU 债务;

债权人凭此 IOU 债务凭证通过第三方保管账户履行债权并进行结果赎回。

债务人和债权人之间的债务关系,通过可靠的第三方保管账户,实现了在时间和空间上最大程度的分离和解耦。

IOU 设计模式是 IOU 思想在软件设计领域的应用,最早由 Allan Vermeulen 于 1996 年首次提出。在软件设计领域,债务关系发生在方法调用者和方法体之间,债务对象就是方法的返回结果。普通方法的调用模型是方法体同步执行然后返回结果,调用者必须等待结果返回后才能继续执行。在 IOU 设计模式下,方法体将立即返回一个 IOU 对象,并且承诺 IOU 对象最终一定会被终止,调用者在 IOU 对象被终止后可进行结果的赎回。在此期间,调用者无需等待就能够继续进行其它有价值的事务,从而达到了提高程序整体的并发性和异步性的目的。

IOU 设计模式完全不依赖于任何一种异步机制,IOU 对象的提供者可以选择任意有效的方式来执行服务并最终终止 IOU 对象,比如启用独立的线程/进程执行、驱动异步事件产生、通过远程方法调用或是等待用户终端输入等等。这是 IOU 模式具备普遍适用性的一个重要因素。

IOU 模式分析及实现

IOU 模式主要有 Iou(债务凭证)和 Escrow(第三方保管账户)两个对象,模式的实际使用时还会涉及 Caller(调用者)、Callee(被调用者)及 AsyncService(异步服务)等对象。

时序图

通过时序图,读者可以建立对 IOU 模式使用过程的初步印象。

图 1. IOU 模式时序图

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

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

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

IOU 接口定义

IOU 对象具备两种状态:一是未终止状态,意味着结果对象尚不可赎回;另一种是已终止状态,意味着结果对象可赎回。IOU 对象同时需支持四种基本操作:

支持对状态的查询操作;

支持等待操作直至其被终止;

支持对结果的赎回操作,若尚未终止则保持等待直至其被终止;

支持添加或删除回调对象的操作。

IOU 接口定义见清单 1。

清单 1. Iou 接口定义

public interface Iou {    // 判断 IOU 对象是否已终止    boolean closed();    // 保持等待直至被终止    void standBy();    // 赎回结果,如果 IOU 对象尚未被终止则该方法将保持等待直至终止后再返回结果    Object redeem();    // 添加回调对象 cb    void addCallback(Callback cb);    // 删除回调对象 cb    void removeCallback(Callback cb); }

Escrow 接口定义

Escrow 是第三方保管账户,它实际上扮演了一个桥梁作用。在债务关系建立初期,债务人通过 Escrow 向债权人发行 Iou;当债务关系结束时,债务人通过 Escrow 终止 Iou,并使其进入结果可赎回状态。如果债权人前期设置了回调对象,回调机制在 Iou 对象被终止时将立即执行债权人所提前设定的特定操作。Escrow 接口定义见清单 2。

清单 2. Escrow 接口定义

public interface Escrow {    // 发行 Iou 对象    Iou issueIou();    // 终止 Iou 对象,参数是最终结果    void close(Object o); }

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

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

Callback 接口定义

IOU 模式中的回调机制主要是为了提供一种当 Iou 对象进入结果可赎回状态时能够立即执行某些回调动作的能力。每个回调对象都需实现 Callback 接口,并向感兴趣的 Iou 对象进行注册。每个 Iou 对象都会维护一个 Callback 对象列表,每个 Callback

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