结构型模式之装饰器模式

装饰器模式

装饰器模式

点评:

/**
 * 装饰设计模式
 * 动态的给一个对象添加一些额外的职责,
 * 就增加功能来说 比生成子类更加灵活
 *
 * 使用场景:
 *      1.需要拓展一个类的功能,或者给一个类附加功能
 *      2.在一些情况下 使用集成会增加很多子类,而且灵活性差,装饰模式可以代替继承,解决类膨胀问题
 *
 *
 * 4个角色
 * 1.抽象构件
 * 2.具体构件
 * 3.装饰角色
 * 4.具体角色
 */
public class DecoratorPattern {
    //抽象构件
    interface Component {
        void operation();
    }

    //具体构件
    class ConcreteComponent implements Component {
        @Override
        public void operation() {

        }
    }

    //装饰角色
    abstract class Decorator implements Component {
        private Component component = null;

        public Decorator(Component component) {
            this.component = component;
        }

        public void operation(){
            this.component.operation();
        }
    }

    //具体角色
    public class ConcreteDecorator extends Decorator{
        private Component component;
        public ConcreteDecorator(Component component) {
            super(component);
        }
        //定义自己的方法
        private void method(){}
        //重写operation方法
        public void operation(){
            this.method();
            super.operation();
        }
    }
}

你可能感兴趣的:(结构型模式之装饰器模式)