09设计模式-结构型模式-装饰模式

概述
  • 适配器是连接两个类,可以增强一个类,装饰器是增强一个类
  • 向一个现有的对象添加新的功能,同时又不改变其结构。属于对象结构型模式。
  • 创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能

讲人话就是对代码层面已经有的类,加上别的功能【装饰一些别的类,让代码看上去更简洁明了,可以按功能将不同的代码分开,符合ocp和代码可读性】
在这里插入图片描述
什么场景使用?
无处不在…
SpringSession中如何进行session与redis关联?HttpRequestWrapper
session:数据存在了内存
session:数据存在redis
HttpSession;getAttribute();
Wrapper(session){
getAttribute(String param){ redis.get(param) };
}
MyBatisPlus提取了QueryWrapper,这是什么?
Spring中的BeanWrapper是做什么?包装了Bean。bean的功能增强?
Spring Webflux中的 WebHandlerDecorator?
已存的类,每一天在某个功能使用的时候发现不够,就可以装饰器。

代码

// 需要被装饰的类

package com.xusj.future.structural.wrapper;

/**
 * @author xusj
 * <br>CreateDate 2022/7/28 22:31
 */
public abstract class ManTikTok {
    abstract void tiktok();
}

// 被装饰类子类

package com.xusj.future.structural.wrapper;

/**
 * @author xusj
 * <br>CreateDate 2022/7/28 22:32
 */
public class WuTikTok extends ManTikTok{
    @Override
    void tiktok() {
        System.out.println("wode");
    }
}

// 装饰类

package com.xusj.future.structural.wrapper;

/**
 * @author xusj
 * <br>CreateDate 2022/7/28 22:38
 */
public abstract class TikTokDecorator extends ManTikTok {
    /**
     * 方法二
     */
    abstract void enable();
}

// 继承或实现装饰类,这样既有了被装饰类的方法,也有了装饰类的额外抽离出来的方法

package com.xusj.future.structural.wrapper;

/**
 * 装饰者提供而外的功能
 *
 * @author xusj
 * <br>CreateDate 2022/7/28 22:41
 */
public class MWrapper extends TikTokDecorator {
    @Override
    void tiktok() {

    }

    @Override
    void enable() {

    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值