私のプロジェクトでTableDecoratorを実装する方法.誰でもそのための手順またはコードを提供できますか.
3 に答える
「Decorator」はクラスではなくデザインパターンです。パッケージには、このパターンの実装がたくさんあり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());
次のクラスはデコレータパターンを使用します。
のすべてのサブクラスに
java.io.InputStream, OutputStream, Reader and Writer
は、同じタイプのインスタンスをとるコンストラクターがあります。、Set、およびMapのほとんどすべての実装には
java.util.List
、同じタイプのインスタンスをとるコンストラクターがあります。java.util.Collections
、checkedXXX(), synchronizedXXX() and unmodifiableXXX()
メソッド。javax.servlet.http.HttpServletRequestWrapper and HttpServletResponseWrapper
TableDecorator
OK、どうやらこのクラスについて話しているようです。
抽象的ですが、抽象メソッドはありません。そのため、abstract
修飾子は単にスーパー クラスのインスタンス化を停止するためのものだと思います。代わりに、サブクラスの 1 つを使用してください。
直接既知のサブクラス:
MultilevelTotalTableDecorator
、TotalTableDecorator
TableDecorator
(独自のクラスを実装するつもりはないと思います)