gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:23:10 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com