装饰者模式(Decorator)

统一接口

提供一个同一的接口同目标对象与装饰对象实现

/**
 * 统一接口
 */
interface Filterable {
    
    public void filter();
}
目标对象
/**
 * 目标类
 */
public class Filter implements Filterable{

    @Override
    public void filter() {
        System.out.println("目标类过滤的核心方法");
    }
    
}
目标对象包装类

在调用目标对象业务方法前后,可以有选择的执行自定义的增强方法

public class DecoratorForFilter implements Filterable{
    
    private Filterable filterable;
    
    public DecoratorForFilter(Filterable filterable) {
        this.filterable = filterable;
    }
    
    private void beforeMethod() {
        System.out.println("目标方法执行之前,执行的增强方法");
    }
    
    private void afterMeshod() {
        System.out.println("目标方法执行之后,执行的增强方法");
    }
    
    @Override
    public void filter() {
        
        // 增强方法
        this.beforeMethod();
        // 目标方法
        this.filterable.filter();
        // 增强方法
        this.afterMeshod();
    }
    
}
测试

实际上我们调用的是包装类,只是在包装类内部调用了目标的方法

public class TestMain {
    
    @Test
    public void test() {
        
        // 目标对象
        Filter filter = new Filter();
        // 对目标对象进行包装
        DecoratorForFilter dfFilter = new DecoratorForFilter(filter);
        // 执行包装后的业务方法
        dfFilter.filter();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容