我想以这种方式创建访问者模式
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/