我应该在哪里验证参数?工厂模式,Java
假设我有一个带有抽象生成器的抽象类,这两个类都由3个独立的子类继承:我应该在哪里验证参数?工厂模式,Java,java,validation,abstract-class,factory-method,Java,Validation,Abstract Class,Factory Method,假设我有一个带有抽象生成器的抽象类,这两个类都由3个独立的子类继承: public abstract class Role { protected string name; protected int propertyA; protected int propertyB; protected abstract static class RoleBuilder<T extends Role, B extends RoleBuilder<T,B>
public abstract class Role {
protected string name;
protected int propertyA;
protected int propertyB;
protected abstract static class RoleBuilder<T extends Role, B extends RoleBuilder<T,B>> {
protected T role;
protected B roleBuilder;
protected abstract T getRole();
protected abstract B thisBuilder();
protected RoleBuilder(Hero h) {
role = getRole();
roleBuilder = thisBuilder();
role.name = h.name;
role.propertyA = h.propertyA;
role.propertyB = h.propertyB;
}
public T build() {
return role;
}
}
}
public class Healer extends Role {
int propertyC;
public Healer() {
}
public static final class HealerBuilder extends Role.RoleBuilder<Healer, HealerBuilder> {
@Override protected Healer getRole() {
return new Healer();
}
@Override protected HealerBuilder thisBuilder() {
return this;
}
public HealerBuilder(Hero h) {
super(h);
}
public HealerBuilder setPropertyC(int i) {
role.propertyC = i;
return roleBuilder;
}
}
}
我应该在哪里验证创建这些对象的参数
- 在抽象类构造函数(我应该验证Hero对象属性吗,或者如果在创建时验证了对象的属性,我可以假设对象是“安全的”)和子类生成器方法中
- 在枚举方法中
- 在调用RoleType.getRole(h)的工厂方法中,我的应用程序的其余部分使用它来实际创建Role类型的对象
public enum RoleTypes {
BRUISER{
...
},
DAMAGE_DEALER {
...
},
HEALER {
public Healer getRole(Hero h) {
return new Healer.HealerBuilder(h)
.setPropertyC(h.getC);
.build();
}
};
abstract Role getRole(Hero h);
}