Java IO 包中的Decorator情势[Java编程]
本文“Java IO 包中的Decorator情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
JDK为程序员供应了大量的类库,而为了保持类库的可重用性,可扩大性和机动性,此中利用到了大量的计划情势,本文将介绍JDK的I/O包中利用到的Decorator情势,并应用此情势,实现一个新的输出流类.
Decorator情势简介
Decorator情势又名包装器(Wrapper),它的主要用处在于给一个对象动态的增添一些额外的职责.与生成子类相比,它更具有机动性.
有时刻,我们需求为一个对象而不是整个类增添一些新的功效,比方,给一个文本区增添一个转动条的功效.我们可以利用担当机制来实现这一功效,但是这种办法不够机动,我们无法掌握文本区加转动条的方法和机会.并且当文本区需求增添更多的功效时,比方边框等,需求成立新的类,而当需求组合利用这些功效时无疑将会惹起类的爆炸.
我们可以利用一种更为机动的办法,就是把文本区嵌入到转动条中.而这个转动条的类就相当于对文本区的一个装潢.这个装潢(转动条)必须与被装潢的组件(文本区)担当自同一个接口,这样,用户就没必要关心装潢的实现,因为这对他们来说是透明的.装潢会将用户的恳求转发给呼应的组件(即调用相关的办法),并大概在转发的前后做一些额外的行动(如增添转动条).通过这种办法,我们可以按照组合对文本区嵌套差别的装潢,从而增添肆意多的功效.这种动态的对对象增添功效的办法不会惹起类的爆炸,也具有了更多的机动性.
以上的办法就是Decorator情势,它通过给对象增添装潢来动态的增添新的功效.以下是Decorator情势的UML图:
Component为组件和装潢的大众父类,它定义了子类必须实现的办法.
ConcreteComponent是一个具体的组件类,可以通过给它增添装潢来增添新的功效.
Decorator是全部装潢的大众父类,它定义了全部装潢必须实现的办法,同时,它还保存了一个关于Component的引用,以便将用户的恳求转发给Component,并大概在转发恳求前后履行一些附加的行动.
ConcreteDecoratorA和ConcreteDecoratorB是具体的装潢,可以利用它们来装潢具体的Component.
Java IO包中的Decorator情势
JDK供应的java.io包中利用了Decorator情势来实现对各种输入输出流的封装.以下将以java.io.OutputStream及其子类为例,谈论一下Decorator情势在IO中的利用.
首先来看一段用来成立IO流的代码:
以下是代码片段:
try {
OutputStream out = new DataOutputStream(new FileOutputStream("test.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
以上是“Java IO 包中的Decorator情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |