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 模式
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/