Java设计模式之修饰模式篇(1)
table.setModel(sortDecorator);
在这段代码中,程序首先将表模型包装在一个修饰对象中。以后当表对它的模型进展操作的时候,它实际上操作的是排序修饰对象(sortDecorator),该修饰对象在表模型中参加了排序功能,而将其他根本的功能托付给缺省的表模型,在修饰模型中,这个缺省的表模型又被称为真实对象(real subject)。
在Java的编程中,基类和子类的继承关系在编译的时候就被固定了,就像手机的天线和话筒一样。由于继承关系是静态的,开发人员无法在程序运行时转变对象的行为。但是通过修饰者开发人员可以在运行时拼装对象,因此修饰模式供应了一种比继承更敏捷的功能扩大模式。
修饰模式(Decorator Pattern)
在运行时将特定的功能绑定在对象上,这就是修饰模式的核心。修饰模式比继承更加敏捷,由于后者是在编译时就将特定的功能绑定到类上。
下面然我们来看一个简洁的I/O例子:
FileReader frdr = new FileReader(filename);
LineNumberReader lrdr = new LineNumberReader(frdr);
这段代码中创立了一个Reader:lrdr。它从一个文件中读取数据并跟踪文件的行号。在第一行创立的frdr对象能够从文件中读取数据,而其次行给lrdr增加了跟踪行号的功能。在运行时(runtime),修饰者将方法调用传递给它所修饰的真实对象。在上面的例子中,lrdr将方法调用传递给它修饰的真实对象frdr。修饰者除了能够进展方法传递外,还能够增加类的功能。例如在上面的例子中,lrdr能够跟踪当前的文件流读入数据的行号。
而下面的例子显示了如何在程序中使用修饰者lrdr。程序将数据按行从文件中读出后,加上行号输出到屏幕上。
try {
LineNumberReader lrdr = new LineNumberReader(new FileReader(filename));
for(String line; (line = adLine()) != null;) {
System.out.LineNumber() + “:\t“ + line); }
}
catch(java.io.FileNotFoundException fnfx) {
fnfx.printStackTrace();
}
java中常用的设计模式有哪些catch(java.io.IOException iox) { iox.printStackTrace();
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论