快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
hingOther();      // 开始享用食物      eat(foodCooked);      // 开始晾晒衣服      hangout(iou);    }    private static Iou wash(Clothes clothes)    {      logger("Schedule a task to wash " + clothes);      // 构造 Escrow 对象      Escrow escrow = new RealIouEscrow();      // 启动后台洗衣服务      AsyncService service = new AsyncService("wash clothes", clothes, escrow);      service.start();      // 随即通过 Escrow 对象发行一个传统的 Iou      return escrow.issueIou();    }    private static Food cook(Food food)    {      logger("Schedule a task to cook " + food);      // 构造扩展 Escrow 对象,并关联 Food 接口类型      Escrow escrow = new RealIouEscrowEx(Food.class);      // 启动后台烹饪服务      AsyncService service = new AsyncService("cook food", food, escrow);      service.start();      // 随即通过扩展 Escrow 对象发行一个扩展 Iou      // 它可以被安全地类型装换到 Food 类型      return (Food)escrow.issueIou();    }    private static void eat(Food food)    {      logger("Be about to eat food...add some spice first...");      // 演示在扩展 Iou 对象上执行方法(效果等价于在真实结果上调用该方法)      food.addSpice();      logger(food + " is eaten.");    }    private static void hangout(Iou iou)    {      logger("Be about to hang out clothes...");      // 演示在传统 Iou 对象上的检查、等待并赎回结果      if( !iou.closed() )      {        logger("Clothes are not ready, stand by...");        iou.standBy();      }      Object clothes = iou.redeem();      logger(clothes + " are hung out.");    }    …… }

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

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

程序的最终执行输出见清单 11。

清单 11. 程序输出

[Mon Sep 14 13:33:41 CST 2009] Schedule a task to wash ''Dirty'' clothes    >>> Starting to wash clothes [Mon Sep 14 13:33:42 CST 2009] Do something other [442 millis] [Mon Sep 14 13:33:42 CST 2009] Schedule a task to cook ''Uncooked'' food    >>> Starting to cook food [Mon Sep 14 13:33:42 CST 2009] Do something other [521 millis] [Mon Sep 14 13:33:42 CST 2009] Be about to eat food...add some spice first...    >>> Object is not ready, stand by at calling addSpice()    <<< Finished wash clothes [1162 millis]    <<< Finished cook food [889 millis]    <<< Object is ready, continue from calling addSpice()    >>> Adding spice...    <<< Spice is added. [Mon Sep 14 13:33:43 CST 2009] ''Cooked'' food is eaten. [Mon Sep 14 13:33:43 CST 2009] Be about to hang out cl

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