• 设计模式装饰


    装饰模式


    设计原则:遵循迪米特、单一职责、开闭原则,破坏里氏替换,体现功能复用
    常用场景:一个类需要动态的添加功能,且这些功能可以相互叠加
    使用概率:99.99999%
    复杂度:中
    变化点:动态添加的功能或者说装饰器
    选择关键点:添加的功能是否需要动态组装
    逆鳞:无


    主要思想:
    创建装饰类继承或实现 需要被装饰类相同的父类或接口
    持有被装饰类实例
    调用被装饰类方法在前后可增加功能

    和代理模式的区别在于,理论上装饰模式不控制持有的对象,只是增加一些装饰
    代理模式理论上,被代理类是不可直接用的,持有代理对象,可控制其执行与否


    public interface MyInterface {
        public void do1();
        public void do2();
    }
    
    
    
    public class MyClass implements MyInterface {
        @Override
        public void do1() {
            System.out.println("my do1");
        }
    
        @Override
        public void do2() {
            System.out.println("my do2");
        }
    }
    
    
    public class MyDecrator implements MyInterface{
    
        private MyInterface myInterface;
    
        public MyDecrator(MyInterface myInterface) {
            this.myInterface = myInterface;
        }
    
        @Override
        public void do1() {
            System.out.println("装饰前1");
            myInterface.do1();
            System.out.println("装饰后1");
        }
    
        @Override
        public void do2() {
            System.out.println("装饰前2");
            myInterface.do2();
            System.out.println("装饰后2");
        }
    }
  • 相关阅读:
    1 Anytao系列文章
    arraylist使用
    安装SQL 2005 的前提条件
    div+css
    Web MVC框架的三种类型
    使用javascript做页面间传值
    应用程序框架设计
    利用UrlRewrite,asp.net动态生成htm页面
    收集
    dwr配置
  • 原文地址:https://www.cnblogs.com/zhaojj/p/7772654.html
Copyright © 2020-2023  润新知