私はその後、私は工場クラスの派生 - ビジターパターン
public class SomeBusinessServiceFactory {
public SomeBusinessService createService
(Class<? extends SomeBusinessService> clazz){
//do some stuff to create appropriate class derivation on the fly
// that will have accept() method implemented
}
}
を作成したいと思います
上
public interface Visitable<T>{
public void accept(T visitor);
}
public interface SomeBusinessService implements Visitable<SomeVisitor>{
public void mtd1();
public void mtd2();
}
public abstract class SomeBusinessBean1 implements SomeBusinessService {
public void mtd1(){}
public void mtd2(){}
}
public abstract class SomeBusinessBean2 implements SomeBusinessService {
...
}
ので、このような方法で、ビジターパターンを作成したいです
と私は次のようにそれを呼び出すことができます
SomeBusinessService service =
SomeBusinessServiceFactory.createService(SomeBusinessBean1.class);
このアプローチでは、 がVisitorインターフェイスのaccept()メソッドを実装するすべてのBeanに対して、comman抽象クラスを作成する必要はありません。
このソリューションは、クラス階層ごとにサービスファクトリに応じて特定のメソッドの共通の動作をしたい場合にも使用できます。
標準のjdkでこれを行う方法はありますか、あるいは私はcglibのような外部ツールを使う必要がありますか、あるいは私が言うことはごみであり、他の方法でその目標を達成することができます。
先進
だけclarificatin用: 'Visitor'と' Visitable'は「同じ」であり、それは、問題のタイプミスだか、二つの異なるインターフェースを持っていますか? –
通常、「訪問者」は、「訪問可能」クラスを訪問できるものを表します。 – aioobe
申し訳ありませんが私の悪い私は訪問可能を実装しています。訪問者クラスは適切なクラスを入力引数として持つvisit()メソッドのみを持ちます –