我正在开发一个库,我想在其中返回一个代表真实世界对象的对象。我想向开发人员公开这个类来操纵现实世界的对象,但我不想让他们自己构造这些对象。
例子
public class World {
public static List<RealObject> getAllObjects() {
// How to create RealObject with physicalID?
}
}
public class RealObject {
private int physicalID;
public RealObject(int physicalID) {
// Undesirable, user has no knowledge of IDs
}
public void setState(int state) {
// Code using physicalID to change state
}
}
这些对象目前没有构造函数,并且有一个私有id
字段,我通过库中的反射设置了该字段。这完美地工作,但我不禁认为必须有更好的解决方案。在我的情况下,一个有用的约束可能是它只需要可以从另一个类构造这个对象。
有更好的解决方案吗?在这种情况下,出于组织目的,是否仍然可以将课程放在单独的文件中?