如何在我的项目中实现 TableDecorator。谁能提供我的步骤或代码。
问问题
1163 次
3 回答
2
“装饰器”不是一个类,而是一种设计模式。您会在包中找到很多此模式的实现java.io
(例如,查看流)
一个可以解释很多的突出例子是BufferedInputStream
. 此类通过添加一些缓冲来装饰任何内容。InputStream
简单的例子:
public interface GreetProvider { public String greet(); }
public class HelloProvider implements GreetProvider {
public String greet() {
return "Hello";
}
}
public class ByeProvider implements GreetProvider {
public String greet() {
return "Good Bye";
}
}
public class SmilyDecorator implements GreetProvider {
private GreetProvider provider;
public SmilyDecorator(GreetProvider provider) {this.provider = provider;}
public String greet() {
return provider.greet() + " :-)";
}
}
// somwhere in some method
GreetProvider hello = new HelloProvider();
GreetProvider bye = new ByeProvider();
GreetProvider helloAndSmiley = new SmileyDecorator(hello);
GreetProvider helloAndTwoSmileys = new SmileyDecorator(helloAndSmiley);
System.out.printf("%s%n%s%n%s%n%s%n",
hello.greet(), bye.greet(),
helloAndSmiley.greet(), helloAndTwoSmileys.greet());
于 2011-04-06T09:12:27.070 回答
1
以下类使用装饰器模式:
的所有子类
java.io.InputStream, OutputStream, Reader and Writer
都有一个构造函数,该构造函数采用相同类型的实例。几乎所有
java.util.List
, Set 和 Map 的实现都有一个构造函数,它采用相同类型的实例。java.util.Collections
,checkedXXX(), synchronizedXXX() and unmodifiableXXX()
方法。javax.servlet.http.HttpServletRequestWrapper and HttpServletResponseWrapper
于 2011-04-06T09:18:37.617 回答
0
好的,显然我们正在谈论这个TableDecorator
类。
虽然它是抽象的,但它没有抽象方法,所以我猜abstract
修饰符只是为了阻止您实例化超类,请改用其中一个子类:
(我不认为你打算实现你自己的TableDecorator
类)
于 2011-04-06T09:28:17.297 回答