给定一个通用的基于树的 (Java) 数据模型。假设
abstract class XModel {
long id;
XModel parent;
}
class ProjectModel extends XModel {
String customer;
}
class FileModel extends XModel {
String name;
}
class FolderModel extends XModel {
String name;
String attributes;
}
我的挑战是确保 FileModels 仅用于 FolderModels(或 ProjectModels)并且 FolderModels 仅用于 ProjectModels。 由于模型应该是可扩展的 - 是否有任何通用的方法来执行此约束验证(如 XML 模式),而无需在验证方法中对父子关系进行硬编码?
最佳答案
我不确定它会有多大用处 - 取决于您如何创建树,但这可能有效:
abstract class XModel<T extends XModel> {
long id;
T parent;
}
class ProjectModel extends XModel { ... }
class FolderModel extends XModel<ProjectModel> { ... }
class FileModel extends XModel<FolderModel> { ... }
更新
要将验证逻辑与模型本身分开,您可以使用一些运行时 validator ,例如 Hibernate或 Spring validator 。
关于java - 模型约束验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075114/