动态类派生 - 访客模式

时间:2011-02-03 07:58:31

标签: java derived-class visitor

我想以这种方式创建访客模式

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);

通过这种方法,我不必为所有bean创建comman抽象类 实现Visitor接口的accept()方法。

此解决方案还可用于我们希望根据每个类层次结构的服务工厂具有特定方法的常见行为的情况。

有没有办法用标准的jdk做到这一点,或者我需要使用像cglib这样的外部工具,或者我说的是垃圾,我们可以用其他方式实现这个目标。

先进的Tx

1 个答案:

答案 0 :(得分:0)

如果您正在寻找一种从类对象创建类实例的方法,而不是查看java reflection api。

clazz.newInstanze();

clazz.getConstructors(...).newInstance(...);