装饰器模式的思路整理

在不改变原有对象的基础上,将新功能附加到原对象上,
例如生活中在拍照的基础上添加美颜,此功能就相当于一个装饰作用。

定义抽象接口做统一调用标准

package decorator;

/**
 * @Auther: 苏察哈尔丶灿
 * @Date: 2020/8/8 09:11
 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。
 */
public interface IComponent {
    void operation();
}

定义相机类

package decorator;

/**
 * @Auther: 苏察哈尔丶灿
 * @Date: 2020/8/8 09:12
 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。
 */
public class Photo implements IComponent {
    @Override
    public void operation() {
        System.out.println("拍照");
    }
}

定义装饰器类

package decorator;

/**
 * @Auther: 苏察哈尔丶灿
 * @Date: 2020/8/8 09:16
 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。
 */
public class Decorator implements IComponent{
    private IComponent component;

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

    @Override
    public void operation() {
        System.out.println("美颜");
        component.operation();
    }
}

测试用例

package decorator;

/**
 * @Auther: 苏察哈尔丶灿
 * @Date: 2020/8/7 16:55
 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。
 */
public class Test {
    public static void main(String[] args) {
        Decorator decorator = new Decorator(new Photo());
        decorator.operation();
    }
}

执行结果如下:

你可能感兴趣的:(设计模式)