装饰器模式

138 阅读1分钟

装饰器模式

定义:装饰器模式不必改变原有类和使用继承的情况下,动态拓展一个对象的功能

核心就是装饰对象持有原始对象.

1.待装饰的接口

package com.zmfdd.designpatterns.decorator;

public interface Component {

    void work();
}

2.接口的实现类 RealComponent,也就是原始对象.

package com.zmfdd.designpatterns.decorator;

public class ReadComponent implements Component {
    @Override
    public void work() {
        System.out.println("原始对象的工作");
    }
}

3.抽象装饰器父类,定义了需要的装饰的目标,并对Component进行基础的装饰.

package com.zmfdd.designpatterns.decorator;

public abstract class AbstractDecorator implements Component{

    protected  Component component;

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

    @Override
    public void work() {
        component.work();
    }
}

4.具体的装饰器

package com.zmfdd.designpatterns.decorator;

public class RealDecorator  extends AbstractDecorator {

    public RealDecorator(Component component) {
        super(component);
    }

    @Override
    public void work() {
        System.out.println("前置包装");
        super.work();
        System.out.println("后置包装");
    }
}