• 【24种设计模式】装饰器模式(Decorator Pattern(Wrapper))


    装饰器模式

    装饰器模式是一种结构型设计模式,用于动态地给对象添加额外的行为或责任,而不需要改变原始对象的结构。通过创建一个包装器类(装饰器),它包含原始对象的引用,并提供与原始对象相同的接口,可以在运行时灵活地添加、修改或移除原始对象的功能。

    以下是一个简单的装饰器模式的示例:

    // 定义一个接口,表示组件(Component)
    public interface Message {
        void send();
    }
    
    // 实现 Component 接口的具体组件类(ConcreteComponent)
    public class EmailMessage implements Message {
        @Override
        public void send() {
            System.out.println("Sending email message");
        }
    }
    
    // 创建一个抽象装饰器类(Decorator),实现 Component 接口
    public abstract class MessageDecorator implements Message {
        protected Message decoratedMessage;
    
        public MessageDecorator(Message decoratedMessage) {
            this.decoratedMessage = decoratedMessage;
        }
    
        @Override
        public void send() {
            decoratedMessage.send();
        }
    }
    
    // 具体装饰器类(ConcreteDecorator),扩展装饰器功能
    public class SecureMessageDecorator extends MessageDecorator {
        public SecureMessageDecorator(Message decoratedMessage) {
            super(decoratedMessage);
        }
    
        @Override
        public void send() {
            encryptMessage();
            super.send();
        }
    
        private void encryptMessage() {
            System.out.println("Encrypting message");
        }
    }
    
    // 使用示例
    public class Main {
        public static void main(String[] args) {
            // 创建具体组件对象
            Message emailMessage = new EmailMessage();
    
            // 创建装饰器对象,将具体组件对象传入
            Message secureEmailMessage = new SecureMessageDecorator(emailMessage);
    
            // 调用装饰后的方法
            secureEmailMessage.send();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    在上述示例中,Message 是一个表示消息发送的接口,EmailMessage 是实现了 Message 接口的具体组件类。MessageDecorator 是抽象装饰器类,它也实现了 Message 接口,并持有一个 Message 类型的引用。SecureMessageDecorator 是具体装饰器类,它扩展了装饰器的功能,包括对消息的加密操作。

    通过使用装饰器模式,我们可以动态地向需要发送的消息添加额外的加密行为,而不需要修改原始的消息发送逻辑。在示例中,secureEmailMessage 是对 emailMessage 的装饰,通过调用 send() 方法,会先进行加密操作,然后再发送邮件。这样我们可以在运行时根据需要添加或者移除装饰器,以达到动态地增加功能的效果。

  • 相关阅读:
    【C语言】逆置算法
    Elasticsearch&JDK版本要求
    重磅发布!RflySim Cloud 智能算法云仿真平台亮相,助力大规模集群算法高效训练
    GitHub上有哪些C++写的FTP库
    激光焊接汽车PP塑料配件透光率测试仪
    【车载开发系列】S19/HEX/BIN文件解析
    Java使用milo读写OPC UA源代码示例
    生信步骤|MAFFT结合HMMER进行多序列比对和基于隐马模型的基因搜索
    迅为RK3588开发板编译环境Ubuntu20.04 编译配置增加交换内存
    Linux系统IO
  • 原文地址:https://blog.csdn.net/Bankcary/article/details/132705715