美文网首页
装饰者模式(Decorator)

装饰者模式(Decorator)

作者: tingshuo123 | 来源:发表于2018-09-26 22:23 被阅读0次
    统一接口

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

    /**
     * 统一接口
     */
    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();
        }
    }
    

    相关文章

      网友评论

          本文标题:装饰者模式(Decorator)

          本文链接:https://www.haomeiwen.com/subject/epxsoftx.html