原创作者: chinajavawolf   阅读:1192次   评论:0条   更新时间:2011-05-26    
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf  

策略模式

另一个四人帮(Gang Of Four)模式,策略模式作为Tapestry IoC内的实现是一种后期约束。

这个概念是适配器为对象基于一个对象的真实类型被访问。这些适配器支持附加的功能。这个适配器使用一个StrategyRegistry被加载。

适配器的查找基于一个继承查找;因此提供一个适配器给java.util.Map类型将匹配任何实现了Map接口的对象。这个继承查找工作在类层次结构上查找一个匹配注册。如果没找到什么,那么所有的接口直接或间接通过选择的类的实现被检查。Java.lang.Object总是最终的匹配。

如果没有匹配被找到,一个运行时异常被抛出。

作为一个特例,null值被查找作为一个类的void实例。

StrategyBuilder服务创建一个服务实现围绕一个策略注册。

  1. public interface StrategyBuilder{   
  2.   
  3. S build(StrategyRegistry registry);   
  4.   
  5. }   
  6.   

对于一个给定的接口(并且匹配StrategyRegistry),一个服务实现被创建。这个服务接口被从策略注册中确定。

每个模块的第一个参数是一个选择器。他的类型被用来定位一个适配器。

相应的适配器方法随后被调用,传递所有参数。

这个服务接口的每个方法应该接受至少一个参数。通常,这样的接口有一个或两个方法。

例如:
你通常有一个服务配置为定义的适配器注册。

你转换这个配置给StrategyRegistry,然后使用它构建这个最终服务:

  1. public static MyStrategyService build(Map configuration,   
  2.   @InjectService("StrategyBuilder")   
  3.   StrategyBuilder builder)   
  4. {   
  5.    StategyRegistry registry = StrategyRegistry.newInstance(MyStrategyService.class, configuration);   
  6.   
  7.    return builder.build(registry);   
  8. }  


评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics