WEB开发网
开发学院软件开发Java IOU 设计模式介绍及应用 阅读

IOU 设计模式介绍及应用

 2010-03-15 00:00:00 来源:WEB开发网   
核心提示: 程序的最终执行输出见清单 11,清单 11. 程序输出[MonSep1413:33:41CST2009]Scheduleatasktowash'Dirty'clothes>>>Startingtowashclothes[MonSep1413:33:42CST20

程序的最终执行输出见清单 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 clothes... 
[Mon Sep 14 13:33:43 CST 2009] 'Clean' clothes are hung out. 

来分析一下程序的执行情况:女管家在安排了洗衣事务后,继续做了 442 毫秒的其他事情,接着她又安排了烹饪事务,完后又做了 521 毫秒的其他事情,然后她打算开始享用食物(IOU 模式的魔力:女管家以为 cook 方法返回的“食物”是已经做好的),当她向食物上添加美味的调味品时,奇妙的事情发生了,扩展的 IOU 模式开始发挥作用,它会发现食物其实没有真正做好,于是在食物 Iou 对象上保持等待直至其被终止并可赎回(数据显示烹饪事务实际总耗时 889 毫秒),然后才执行真正的添加调味品动作,之后控制权又回到了女管家(女管家对之前的等待过程浑然不知,因为在她看来仅仅是一个普通的方法调用),女管家最终美美地享用了美味的食物,接着她开始晾晒衣服,这次衣服 Iou 对象的赎回进行得相当顺利,因为洗衣事务的确已经顺利完成了。在整个过程中,我们看到有若干事务在并行进行,却只有一个等待过程,而这唯一的等待过程也在 Java 动态代理机制下实现了对女管家的完全透明,这就是融合了动态代理机制后的扩展 IOU 模式的魅力所在。

总结

IOU 模式在帮助提高程序的并发性方面有着非常独到的作用,而引入了动态代理机制支持的扩展 IOU 模式又融入了更加友好的用户体验,两者相得益彰,可谓珠联璧合。

上一页  3 4 5 6 7 8 

Tags:IOU 设计模式 介绍

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接