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

导读:本篇文章讲解 09设计模式-结构型模式-装饰模式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

概述

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

讲人话就是对代码层面已经有的类,加上别的功能【装饰一些别的类,让代码看上去更简洁明了,可以按功能将不同的代码分开,符合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() {

    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/96218.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!