java - 动态派生类 - 访问者模式

标签 java derived-class visitor-pattern

我想以这种方式创建访问者模式

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 创建公共(public)抽象类 实现 Visitor 接口(interface)的 accept() 方法。

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

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

高级Tx

最佳答案

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

clazz.newInstanze();

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

关于java - 动态派生类 - 访问者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4883624/

相关文章:

java - 我应该如何处理 SwingUtilities.invokeAndWait 抛出的异常

JavaFX 平铺/流程 Pane 动画

c++ - 用派生类填充基类类型的二维 vector

php - 访问者模式对动态类型语言有用吗?

java - 使用 JNA 和 EnumWindows 的问题

java - Logback - 如何单独记录异常的简单名称

c++ - 来自抽象类的新派生类

c++ - 没有虚拟方法的设计模式 "Container Visitor"?

ruby - Ruby 中的访问者模式,还是只使用 block ?