Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编程模式-示例研究_Java_Design Patterns - Fatal编程技术网

Java 编程模式-示例研究

Java 编程模式-示例研究,java,design-patterns,Java,Design Patterns,我在考试中遇到了这个问题: 这是一种什么样的编程/设计模式: FileReader fr = new FileReader("file.txt"); BufferedReader bf = new BufferedReader(fr); 很抱歉给您添麻烦,但编程模式的定义对我来说并不清楚,我不知道如何正确回答这个问题。这就是一个例子 正如维基百科链接文章所述: 装饰器模式是一种设计模式,允许将行为动态添加到现有对象 在您的示例中,您将向文件读取器添加缓冲,这比常规的未缓冲的文件读取器提供更高效

我在考试中遇到了这个问题:

这是一种什么样的编程/设计模式:

FileReader fr = new FileReader("file.txt");
BufferedReader bf = new BufferedReader(fr);
很抱歉给您添麻烦,但编程模式的定义对我来说并不清楚,我不知道如何正确回答这个问题。

这就是一个例子

正如维基百科链接文章所述:

装饰器模式是一种设计模式,允许将行为动态添加到现有对象


在您的示例中,您将向
文件读取器
添加缓冲,这比常规的未缓冲的
文件读取器
提供更高效的读取。这是
装饰器
模式。从设计模式手册:

意图:动态地将附加职责附加到对象。 装饰器提供了一种灵活的替代子类化的方法来扩展 功能性

适用性:使用Decorator

  • 动态、透明地向单个对象添加职责,即不影响其他对象
  • 对于可以撤销的责任
  • 当通过子类进行扩展不可行时。有时,大量独立的扩展是可能的,并且会产生 爆炸式的子类支持每种组合。还是一个班级 定义可能隐藏或不可用于子类化
对于
BufferedReader
,它会将缓冲功能附加到
FileReader


如果您想了解更多关于模式的知识,我建议您阅读这本书(或更轻的“头先模式”)此外,关于JDK中的模式使用,还有很多精彩的东西——非常酷的东西

我相信他们在寻找装饰图案。