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 创建 comman 抽象类。

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

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

高级发送

4

1 回答 1

0

如果您正在寻找一种从其类对象创建类实例的方法,那么请查看 java 反射 api。

clazz.newInstanze();

或者

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