Decorator 模式的目的是不通过子类化动态扩展对象的行为。JSF 框架有很多扩展点(即可插入机制)。JSF 实现可使用 Decorator 模式替换默认的 PropertyResolver、VariableResolver、ActionListener、NavigationHandler、ViewHandler 或 StateManager。通常自定义实现接受通过构造函数传递给它的默认实现的引用。自定义实现仅仅改写功能的一个子集,而将其他功能委托给默认实现。如果希望实现自定义的 ViewHandler,改写默认 ViewHandler 实现的 calculateLocale 方法,可以像 清单 1 那样编写 CustomViewHandler 类:
清单 1. CustomViewHandler 片段
public class CustomViewHandler extends ViewHandler { public CustomViewHandler(ViewHandler handler) { super(); oldViewHandler = handler; }private ViewHandler oldViewHandler = null;public void renderView (facesContext context, UIViewRoot view) { //delegate method to oldViewHandler oldViewHandler.renderView(context, view);}//custom implementation of calculateLocalepublic Locale calculateLocale(FacesContext context) {}}
Strategy 模式
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/