0

私のプロジェクトでTableDecoratorを実装する方法.誰でもそのための手順またはコードを提供できますか.

4

3 に答える 3

2

「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());
于 2011-04-06T09:12:27.070 に答える
1

次のクラスはデコレータパターンを使用します。

  • のすべてのサブクラスにjava.io.InputStream, OutputStream, Reader and Writerは、同じタイプのインスタンスをとるコンストラクターがあります。

  • 、Set、およびMapのほとんどすべての実装にはjava.util.List、同じタイプのインスタンスをとるコンストラクターがあります。

  • java.util.CollectionscheckedXXX(), synchronizedXXX() and unmodifiableXXX()メソッド。

  • javax.servlet.http.HttpServletRequestWrapper and HttpServletResponseWrapper

于 2011-04-06T09:18:37.617 に答える
0

TableDecoratorOK、どうやらこのクラスについて話しているようです。

抽象的ですが、抽象メソッドはありません。そのため、abstract修飾子は単にスーパー クラスのインスタンス化を停止するためのものだと思います。代わりに、サブクラスの 1 つを使用してください。

直接既知のサブクラス: MultilevelTotalTableDecoratorTotalTableDecorator

TableDecorator(独自のクラスを実装するつもりはないと思います)

于 2011-04-06T09:28:17.297 に答える