0

BaseClass次のようないくつかのメソッドを含むクラスがあります

public Result mothodA(Token token, String arg1, String arg2);

public Result mothodB(Token token, String arg1);

public OtherResult mothodC(Token token, String arg1, String arg2);

...

このクラスを何らかの方法で装飾して、自動的にToken引数 (デコレータに格納されます) を渡すことは可能ですか?

期待される出力:

DecoratedBaseClass decorated = new DecoratedBaseClass();
Result result = decorated.methodA("arg1", "arg2");
OtherResult otherResult = decorated.methodC("arg1", "arg2");

それは不可能だと思いますが、デコレータのトリックについては知らないかもしれません。

4

2 に答える 2

3

のインターフェースを変更して、BaseClassこれはデコレータとは関係なく、より多くのアダプターになります。

デコレーター同じインターフェースを
動的に維持しながら、追加の役割をオブジェクトに割り当てます。

を構築しBaseClassAdapter、呼び出しを に委譲しますBaseClass

public class BaseClassAdapter {

    private final BaseClass baseClass;
    private final Token token;

    public BaseClassAdapter(BaseClass baseClass){ 
       this.baseClass = baseClass;
       this.token = ...;
    }

    public Result mothodA(String arg1, String arg2) {
       baseClass.mothodA(token, arg1, arg2);
    }

    ...
}
于 2012-10-07T10:08:06.443 に答える
0
DecoratedBaseClass decorated = new DecoratedBaseClass(token);

DecoratedBaseClass のコンストラクター

//constructor in baseclass
public DecoratedBaseClass(Token token) {
    this.token = token;
}
于 2012-09-26T11:08:39.697 に答える