装饰者模式

作用:对已有的类型进行拓展

复制代码
abstract class Reader{
    public abstract void close();
}

class FileReader extends Reader{
    public void close(){
        System.out.println("FileReader closed!");
    }
}

//使用BufferedReader对FileReader扩展
//1、装饰者模式中要求:装饰者中含有被装饰者的引用
//2、装饰者模式中要求:装饰者和被装饰者应该实现同样的类型
class BufferedReader extends Reader{ //装饰者
    
    FileReader fr = new FileReader();  //被装饰者
    
    public BufferedReader(FileReader fr){
        this.fr = fr;
    }
    
    
    //扩展
    public void close(){
        System.out.println("扩展代码1");
        fr.close();
        System.out.println("扩展代码2");
    }
}


public class Decorate {

    public static void main(String[] args) {
        //1、创建被装饰者
        FileReader fr = new FileReader();
        
        //2、创建装饰者
        BufferedReader br = new BufferedReader(fr);
        
        //3、通过执行装饰者中的方法间接去执行被装饰者中的方法
        br.close();
    }
}
复制代码

 

posted @   StanLong  阅读(101)  评论(0编辑  收藏  举报
编辑推荐:
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
阅读排行:
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· 程序员转型AI:行业分析
· 深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能
· 为DeepSeek添加本地知识库
· .NET程序员AI开发基座:Microsoft.Extensions.AI
点击右上角即可分享
微信分享提示