IOU 设计模式介绍及应用
2010-03-15 00:00:00 来源:WEB开发网扩展 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。
更多精彩
赞助商链接