2

そんな風にビジターパターンを作りたい

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 {
   ...
}

等々

それから私は工場を作りたいです

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 
   }
}

次の方法で呼び出すことができます

SomeBusinessService  service = 
    SomeBusinessServiceFactory.createService(SomeBusinessBean1.class);

このアプローチでは、Visitor インターフェイスの accept() メソッドを実装するすべての Bean に対してコマンド抽象クラスを作成する必要はありません。

このソリューションは、クラス階層ごとのサービス ファクトリに応じて、特定のメソッドに共通の動作を持たせたい場合にも使用できます。

標準のjdkでそれを行う方法はありますか、それともcglibなどの外部ツールを使用する必要があるのでしょうか、それとも私が言っていることはゴミであり、他の方法でその目標を達成することができます.

高度な送信

4

1 に答える 1

0

クラス オブジェクトからクラス インスタンスを作成する方法を探している場合は、Java リフレクション API を参照してください。

clazz.newInstanze();

また

clazz.getConstructors(...).newInstance(...);
于 2011-02-03T09:18:10.613 に答える