装饰者模式

装饰着模式(Decorator)

1 概念

1、定义

  • 在不改变原有对象的基础上,将功能附加到对象上。

图片说明

2、应用场景

  • 扩展一个类的功能或给一个类添加附加职责。

3、优点

  • 不改变原有对象的情况下,扩展功能。
  • 使用不同的组合可以实现不同的效果。
  • 符合开闭原则。

2、实现

package com.xianhuii.designpattern;

public abstract class Decorator implements Component {
    Component component;

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

    public static void main(String[] args) {
        Component component = new ConcreteDecorator2(new ConcreDecorator1(new ConcreteComponent()));
        component.operation();
    }
}

class ConcreDecorator1 extends Decorator {

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

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

class ConcreteDecorator2 extends Decorator {

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

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

interface Component {
    void operation();
}

class ConcreteComponent implements Component {

    @Override
    public void operation() {
        System.out.println("拍照");
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:46
暑期就挂了,秋招还有机会吗
大聪明777:研发提前批,14号刚开的,官网上面的配图上有写。提前批没过的话,秋招还可以投,不过前面的笔试/面试记录会被保留,供秋招参考
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
07-11 13:16
湖南工学院 Java
坚定的芭乐反对画饼_...:谁也不知道,毕竟现在的互联网和十年前已经完全不同了,谁都无法预测未来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务