java.io中使用最多的模式是什么?

jb.*_*jb. 30 java io design-patterns

最近我在求职面试时被问到这个问题,我无法回答.那么,java.io中最常用的模式是什么?它是如何使用的?常见的Java库中使用的其他模式有哪些?

pol*_*nts 31

BufferedReader等实现装饰模式.任何Reader,例如FileReader或者StringReader,都可以使用缓冲功能进行装饰,这实际上是源无关紧要的.


其他模式


反模式

要添加其他人所说的内容,这些是Java库中的几个模式:

反模式:继承而不是组合

Effective Java 2nd Edition,Item 16:赞成组合而不是继承:

Java平台库中存在许多明显违反此原则的行为.例如,堆栈不是向量,因此Stack不应该扩展Vector.类似地,属性列表不是哈希表,因此Properties不应该扩展Hashtable.在这两种情况下,组合物都是优选的.

相关问题


反模式:常量接口

Effective Java 2nd Edition,第19项:仅使用接口来定义类型:

Java平台库中有几个常量接口,例如java.io.ObjectStreamConstants.这些接口应视为异常,不应模拟.

相关问题


反模式:telescoping构造函数和JavaBeans模式

Effective Java 2nd Edition,第2项:在面对许多构造函数参数时考虑构建器(在线摘录):

传统上,程序员使用了伸缩构造函数模式,其中您只为所需的参数提供构造函数,另一个具有单个可选参数,第三个具有两个可选参数,等等[...]伸缩构造函数模式工作,但是当有很多参数时很难编写客户端代码,并且更难写入它.

当您面对许多构造函数参数时,第二种方法是JavaBeans模式,您可以在其中调用无参数构造函数来创建对象,然后调用setter方法来设置每个必需参数以及每个感兴趣的可选参数.[...]不幸的是,JavaBeans模式有其自身的严重缺点[...] JavaBean可能在其构造的中途处于不一致的状态[并且它]排除了使类不可变的可能性.

Bloch建议使用构建器模式.

相关问题


And*_*s_D 24

我想他们想听听Decorator模式,它可以在各种Streams,Readers和Writers中找到.

其他图案(小选择):

我很确定可以找到Java SDK中此维基百科页面上列出的几乎所有模式的示例.


sta*_*ker 8

装饰图案常常在Java I/O使用.

BufferedReader br = new BufferedReader(new FileReader("filename.txt")); 
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

18265 次

最近记录:

9 年,4 月 前