`
chinajavawolf
  • 浏览: 116788 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

(C13)Tapestry IoC:Service Builders Strategy Pattern

阅读更多
本人翻译目的是用来学习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. }  


分享到:
评论

相关推荐

    CNCA-C13-01:2014 强制性产品认证实施规则 - 安全玻璃.zip

    CNCA-C13-01:2014 强制性产品认证实施规则 - 安全玻璃.zip

    CNCA-C13-01:2014 强制性产品认证实施规则 - 安全玻璃.pdf

    《CNCA-C13-01:2014 强制性产品认证实施规则 - 安全玻璃》是中国国家认证认可监督管理委员会发布的一份重要法规,旨在规范和管理安全玻璃产品的强制性产品认证(CCC认证)过程。该规则自2014年9月1日起正式实施,对...

    C PlUS PLUS 最新版c13

    C PlUS PLUS 最新版c13 好多c++的例子 很好

    c13y.github.io:c13y博客

    【c13y.github.io:c13y博客】是一个基于GitHub Pages的个人博客网站,由用户c13y创建并维护。这个博客主要聚焦于IT领域的知识分享,特别是与软件开发、编程技术和Web技术相关的主题。由于博客托管在GitHub上,我们...

    Shizuku-12.5.0.r756.c13ed7d(756).apk

    Shizuku-12.5.0.r756.c13ed7d(756).apk

    C13电阻自动折弯脚设备.rar

    《C13电阻自动折弯脚设备:自动化技术在电子制造中的应用》 在现代电子制造业中,自动化技术的应用越来越广泛,显著提升了生产效率和产品质量。以“C13电阻自动折弯脚设备”为例,这是一套专为电阻器制造设计的自动...

    SMBMS_C13_01.zip

    在本系统中,Spring通过IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)管理了整个应用的组件,使得代码更加松耦合。此外,Spring还提供了AOP(Aspect Oriented Programming,面向切...

    C13电阻自动折弯脚设备.zip非标自动化设备solidworks3D图纸机械设计素材资料

    C13电阻自动折弯脚设备.zip非标自动化设备solidworks3D图纸机械设计素材资料 C13电阻自动折弯脚设备.zip非标自动化设备solidworks3D图纸机械设计素材资料 C13电阻自动折弯脚设备.zip非标自动化设备solidworks3D图纸...

    Altium designer 使用技巧

    - `Name='C13'`:指定组件名称为C13。 - `AND`:表示同时满足以上两个条件。 再比如,我们想要找到所有注释为“1K”的组件: - **语法**:“(ObjectKind='Component')AND(Comment='1K')” - **解释**: - `...

    Haier海尔吸油烟机CXW-219-E900C13使用说明书用户手册图解图示pdf电子版下载.pdf

    Haier海尔吸油烟机CXW-219-E900C13使用说明书用户手册图解图示pdf电子版下载

    JDK宝典源文件(C13-C16)

    《JDK宝典源文件(C13-C16)》是一部深入探讨Java开发工具包(JDK)核心组件的重要资源,涵盖了从版本C13到C16的源代码解析和学习材料。这些版本的JDK是Java发展历程中的关键节点,它们引入了许多新的特性和改进,对...

    CH4和CO2及其多元气体在淮南C13煤中的吸附特性试验研究

    主要结论如下:淮南矿区C13煤吸附CO2的平衡时间约为24 h,远高于对CH4的吸附平衡时间;C13煤对CO2的吸附能力是CH4的2倍以上。C13煤对混合气体的吸附量随CO2体积分数的增大而增大;吸附常数a、b值与二氧化碳体积分数符合...

    基本Vi命令

    - 第13行:`c13G` - 删除 - 从光标到屏幕顶部:`dH` - 到屏幕底部:`dL` - 下一行:`d+` - 当前行的第5列:`d5|` - 接下来的第二个句子:`d)` - 上一段落:`d{` - 模式:`d/pattern` - 下一个模式:`dG` ...

    cummins电控发动机与j1939通讯资料 在 WXJ (C13) 上

    这份"cummins电控发动机与j1939通讯资料 在 WXJ (C13) 上"的文档,显然是关于Cummins电控发动机如何通过J1939协议与车辆其他系统进行数据交换的详细说明。 Cummins电控发动机的核心在于其电子控制系统(ECU),它...

    hat__drive.rar_ass553_volume in drive d

    2. C13、C10:这些可能是磁盘扫描或检查的结果,C可能代表“check”或“chkdsk”,这是一个用于检测和修复磁盘错误的命令。 3. V1:可能表示版本信息,可能是一个软件或工具的版本号,与处理D盘问题有关。 4. P10、...

    sivv-cocinasync-bfbb057c13a3.zip

    【标题】"sivv-cocinasync-bfbb057c13a3.zip" 是一个压缩文件,很可能包含了一个软件项目或代码库。从名称上看,"sivv"可能是项目或公司名,"cocinasync"可能是该项目的核心模块或者功能,而"bfbb057c13a3"看起来像...

    DPI C13 PDU+, Installation and Maintenance Guide

    《DPI C13 PDU+,DPI C13 3-phase PDU+,DPI C19 PDU+及DPI C19 3-phase PDU+安装与维护指南》是针对Lenovo品牌的一系列电源分配单元(Power Distribution Units)的专业手册。这份文档详细阐述了这些设备的安装、...

    c# 2005经典案例

    这个资源包包含了多个项目文件,分别命名为C20、C17、C12、C05、C03、C11、C06、C13、C19、C09,这些文件很可能是按照案例的难度或主题分类。以下是对每个案例可能涉及的关键知识点的详细说明: 1. **C03**: 这个...

Global site tag (gtag.js) - Google Analytics