前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >装饰者模式

装饰者模式

作者头像
许喜朝
发布2022-05-05 16:58:56
1720
发布2022-05-05 16:58:56
举报

装饰者模式

模式定义

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

应用场景

拓展一个类的功能或者给一个类添加附加职责

优点

不改变原有对象的情况下给一个对象拓展功能

使用不同的组合实现不同的效果

符合开闭原则

实现
代码语言:javascript
复制
/**
 * 需求
 * 一个照相机拥有拍照功能,在不改变拍照功能的情况下添加美颜和滤镜功能
 */
public class DecoratorTest {
    public static void main(String[] args) {
        Component component = new ConcreteComponent2(new ConcreteComponent1(new ConcreteComponent()));
        component.operation();
    }
}

interface Component{
    void operation();
}
//拍照
class ConcreteComponent implements Component{
    @Override
    public void operation() {
        System.out.println("拍照");
    }
}
//装饰器
abstract class Decorator implements Component{

    Component component;
    public Decorator(Component component) {
        this.component = component;
    }
}
//美颜
class ConcreteComponent1 extends Decorator{
    public ConcreteComponent1(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        component.operation();
        System.out.println("美颜");
    }
}
class ConcreteComponent2 extends Decorator{
    public ConcreteComponent2(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        component.operation();
        System.out.println("滤镜");
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 装饰者模式
    • 模式定义
      • 应用场景
        • 优点
          • 实现
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档