gpt4 book ai didi

java - 使用java作为输入参数类的工厂模式

转载 作者:行者123 更新时间:2023-12-02 08:11:37 24 4
gpt4 key购买 nike

我有一个方法,它根据应该返回受尊重的 Factory 对象的行为返回受尊重的 Factory 。我应该如何使用java实现这个?

public Object getCurrentBehaviour(Class behavior) {

//e.g behavior type is entity it should return entity factory

//if behavior type is VO it should return VO factory

}


class EntiryFactory{
}

class VoFactory{
}

最佳答案

我建议您创建 2 个基类,1 个用于实体,1 个用于 VO。

示例:

public abstract class Entity implements Serializable {

}

public abstract class AbstractVO {


}

然后,使用 Abstract Factory每个对象工厂的模式

public AbstractFactory {

private AbstractFactory() {}

public abstract Factory getFactory(Class clazz) {
if (Entity.class.isAssignableFrom(clazz)) {
return new EntityFactory();
}

if (AbstractVO.class.isAssignableFrom(clazz)) {
return new VOFactory();
}

return null;
}
}

我正在使用Class.isAssignableFrom()方法说子类可以从父类分配(如果你明白我想说的话,它就是这样做的)。这就是窍门。

为此,我将为每个对象创建一个工厂

public abstract Factory<T> {

public abstract T createObject();
}

public class EntityFactory extends Factory<Entity> {

public Entity createObject(Class entityClass) {
try {
return entityClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
}

public class VOFactory extends Factory<AbstractVO> {

public AbstractVO createObject(Class voClass) {
try {
return voClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
}

最后,获取对象

Entity entity = (Entity)AbstractFactory.getFactory(Entity.class).createObject();

关于java - 使用java作为输入参数类的工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7318211/

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