首页 > 其他分享 >设计模式之装饰器模式

设计模式之装饰器模式

时间:2023-02-25 14:23:54浏览次数:31  
标签:模式 public source 设计模式 sourceInterface 装饰 SourceInterface

设计模式之装饰器模式

1.解释

装饰器模式(Decorator Pattern) 也称为包装模式(Wrapper Pattern) 是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式。

装饰器模式的核心是功能扩展,使用装饰器模式可以透明且动态地扩展类的功能。

2.spring实现装饰器模式

1.创建一个接口SourceInterface

public interface SourceInterface {
    void source();
}

2.创建一个实现类

@Service
public class SourceInterfaceImpl implements SourceInterface {

    @Override
    public void source() {
        System.out.println("我是原本的功能!");        
    }
}

3.创建一个装饰类(重要!)

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class DecorateSource {

    private SourceInterface sourceInterface;
    public void source(){
        System.out.println("我是装饰器代码!");
        sourceInterface.source();
        System.out.println("我也是装饰器代码!");
    }
}

4.测试

@SpringBootTest
class DemoLoginApplicationTests {

    @Resource
    private SourceInterface sourceInterface;

    @Test
    void contextLoads() {
        DecorateSource source = new DecorateSource(sourceInterface);
        source.source();
    }

}

5.结果

我是装饰器代码!
我是原本的功能!
我也是装饰器代码!

标签:模式,public,source,设计模式,sourceInterface,装饰,SourceInterface
From: https://www.cnblogs.com/WangJingjun/p/17154328.html

相关文章

  • iOS UIImage等比缩放、转到横屏的图片到垂直模式、重制大小resize
    UIImage等比缩放分类方法@implementationUIImage(Cat)//计算等比缩放图片的size-(CGSize)equalRatioComputeImageWithTargetWidth:(CGFloat)targetWidthtargetHeight:(......
  • JavaScript最简单的发布/订阅模式
    以下的是在ES6语法上构建的,非常适用于常见的应用场景//消息通知//发布/订阅模式classYLNotificationMessages{constructor(){//事件对象:存放事件的订阅......
  • 设计模式之适配器模式
    简介当我们需要使用某个对象的功能,但是我们没有这个对象时,我们可以用适配器和替换对象来实现这个功能.比如我们手机有typec接口,但是我们没有这个接口的耳机,我们可以......
  • java——spring boot集成RabbitMQ——spring boot实现发布订阅模式——消费者
          pom文件:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/200......
  • A、创建模式(5种)
    设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、......
  • 4 原型模式
    4原型模式定义:通过复制现有实例来创建新的实例,无需知道相应类的信息。简单地理解,其实就是当需要创建一个指定的对象时,我们刚好有一个这样的对象,但是又不能直接使用,我会cl......
  • 3 生成器模式
    3生成器模式定义:封装一个复杂对象构造过程,并允许按步骤构造。定义解释:我们可以将生成器模式理解为,假设我们有一个对象需要建立,这个对象是由多个组件(Component)组合而成,每......
  • 2 单例模式
    2单例模式定义:确保一个类最多只有一个实例,并提供一个全局访问点单例模式可以分为两种:预加载和懒加载2.1预加载顾名思义,就是预先加载。再进一步解释就是还没有使用该单......
  • 5.1 类适配器模式
    5.1类适配器模式通过多重继承目标接口和被适配者类方式来实现适配举例(将USB接口转为VGA接口),类图如下:  USBImpl的代码:publicclassUSBImplimplementsUSB{......
  • 设计模式之代理模式
    简介在某些场景下,我们需要增强某个对象的使用,比如我们在执行某个方法前加输出一条日志,但是我们不能直接改这个类,我们可以用代理对象来实现这个功能模式应用Spri......