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