2007-05-28
(C14)Tapestry IoC:Service Builders Building Pipelines
关键字: Tapestry5本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf 构建管道
在Tapestry内的一个共通的模式是过滤管道。在这个模式下,一个存在的服务是一个使用过滤的装饰器。这个过滤器将委派给这个服务,但在调用这个方法之前有机会去改变或替换参数,并且可以在返回前执行操作。这与命令链相似,但不同的是有两个接口(服务接口和过滤器接口) ,通过服务接口每个滤波器调用下一个过滤器。在命令链中,这个链调用每一个方法,每个必须在链中的下一个命令被调用之前返回。
服务接口和过滤器接口关系密切:过滤器接口必须匹配服务接口,但过滤器接口的每个方法必须有一个附加的参数,类型是服务接口。例如,一个管道执行字符串转换可以使用下面的接口:
- public interface StringTransformService
- {
- String transform(String input);
- }
- public interface StringTransformFilter
- {
- String transform(String input, StringTransformService delegate);
- }
- public class UpcasePreFilter implements StringTransformFilter
- {
- public String transform(String input, StringTransformService delegate)
- {
- return delegate.transform(input.toUpperCase());
- }
- }
- public class UpcasePostFilter implements StringTransformFilter
- {
- public String transform(String input, StringTransformService delegate)
- {
- return delegate.transform(input).toUpperCase();
- }
- }
PipelineBuilder服务对构造管道有用。这个服务经常注入在一个服务构建器方法内,与有序的服务配置一起。
这个构建器完成的是表现每个在管道中的过滤器作为这个服务接口的一个实例。

这个bridge被PipelineBuilder服务创建。这个terminator必须被提供。bridge和terminator实现了这个服务接口。
- public static StringTransformService build(
- @InjectService("PipelineBuilder")
- PipelineBuilder builder,
- List<StringTransformFilter> configuration,
- Log serviceLog)
- {
- StringTransformService terminator = new StringTransformService()
- {
- public String transform(String input)
- {
- return input;
- }
- };
- return builder.build(log,
- StringTransformService.class, StringTransformFilter.class,
- configuration,
- terminator);
- }
这里我们创建terminator给管道作为一个内建类的实例,并且提供给构建器。这个结果是一个新的服务压缩成整个管道。当没有过滤器时,这就是terminator。
- 浏览: 62309 次
- 性别:

- 来自: 哈尔滨

- 详细资料
搜索本博客
我的相册
3
共 3 张
共 3 张
最近加入圈子
最新评论
-
(2)Tapestry5学习小结:中 ...
我都是这样做的 public void contributeValidatio ...
-- by walkerstar -
(A18)Tapestry Core :Co ...
我是真的,那么的那么的希望能多贴出一些,代码说出来。既然能翻译干吗不再多总结一下 ...
-- by hongyuzhe -
(A6)Tapestry Core:Form I ...
问个问题呀,我写的时候为什么private UserAuthenticator ...
-- by changshuangyi -
(3)Tapestry5学习小结:显 ...
怪不得我想看5.0的源代码看不了,原来是没有真正的开放出来呢。
-- by zhenjw -
(3)Tapestry5学习小结:显 ...
大哥,小弟刚来,好像这个栏目就成你的专栏了,哈哈 敬佩敬佩
-- by zhenjw






评论排行榜