美文网首页
装饰模式

装饰模式

作者: milovetingting | 来源:发表于2020-02-19 00:33 被阅读0次

    个人博客

    http://www.milovetingting.cn

    装饰模式

    模式介绍

    装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。

    模式定义

    动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更为灵活。

    使用场景

    需要透明且动态地扩展类的功能时。

    简单使用

    定义Component

    public abstract class Component {
    
        public abstract void operate();
    
    }
    

    定义具体的Component

    public class ConcreteComponent extends Component {
    
        @Override
        public void operate() {
            System.out.println("ConcreteComponent operate");
        }
    
    }
    

    定义Decorator

    public abstract class Decorator extends Component {
    
        private Component component;
    
        public Decorator(Component component) {
            super();
            this.component = component;
        }
    
        @Override
        public void operate() {
            component.operate();
        }
    
    }
    

    定义具体的Decorator

    public class ConcreteDecorator extends Decorator {
    
        public ConcreteDecorator(Component component) {
            super(component);
        }
    
        @Override
        public void operate() {
            operateA();
            super.operate();
            operateB();
        }
    
        public void operateA() {
            System.out.println("operateA");
        }
    
        public void operateB() {
            System.out.println("operateB");
        }
    
    }
    

    调用

    public class Main {
    
        public static void main(String[] args) {
            Component component = new ConcreteComponent();
            Decorator decorator = new ConcreteDecorator(component);
            decorator.operate();
        }
    
    }
    

    输出结果

    operateA
    ConcreteComponent operate
    operateB
    

    相关文章

      网友评论

          本文标题:装饰模式

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