浏览 3491 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-28
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf
影子服务
PropertyShadowBuilder服务被用来构建一种特定的委派的服务实现。
有效的,它被用来允许另一个服务的属性作为它自身的服务被暴露。
例如,tapestry-core模块提供一个WebRequest属性作为一个RequestGlobals服务的请求属性的影子。
这能作为相似的考虑:
但是,两者之间有一个重要的区别:一个阴影属性重新评估每一个方法的调用. 就前者而言, WebRequest服务永远得到这个请求属性的当前值从每个进程RequestGlobals服务中。第二个例子更容易破碎, 因为它会在WebRequest服务实现被创建时暴露他的值在RequestGlobals的请求属性内。 注意这个例子中WebRequest服务是一个普通的单例。这个服务可以被自由注入在任何服务内贯穿框架或应用。在这个服务上调用方法将经常委派给当前的进程请求。调用者不必知道这个内部委托;它仅仅发生。
不用反射
当影子被创建,反射被用来转换属性名为方法名。这个信息被用来构建一个新的类(在运行时)在服务实现时被实例化。
一个典型的方法实现是(大约):
也就是说,影子实现控制在目标对象之上(在上面的例子, RequestGlobals服务)然后直接调用方法,不用反射,与你自己写的代码比没有区别。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |