标签:java inheritance validation class-hierarchy
我正在为某些对象(这些对象的字段)设计验证器.这些对象被包含在一个更大的对象 – 容器中.
示例:汽车作为容器.由车轮,发动机,车身组成.
让我们说我需要验证车轮是否有正确的直径,发动机是否具有正确的容量,车身是否具有一定的长度等.
从理论上讲,我认为我应该在建造集装箱(汽车)之前验证一切.
实现这一目标的最佳方法是什么?我是否使用validate()方法创建一个抽象的验证器类并在每个封闭的类中实现它?容器怎么样,我在验证过程中根本不包含它?感谢帮助.
解决方法:
我建议你不要将验证逻辑放在你要验证的类中.
我发现最好将这些类保留为纯粹的值对象,并创建一个验证器的并行层次结构,大约每个要验证的实体一个.或者,您也可以创建一个可以验证所有实体的验证器:但是,此解决方案的可扩展性较差,并且当您必须添加新实体时可能会使您违反open-closed principle(例如,您也想要处理后方 – 查看汽车的镜子).
假设您选择一个实体:一个验证器方法,容器的验证器将首先验证容器内的组件,然后验证它们是否适合.
请考虑使用验证器框架(如Apache Commons Validator)的可能性,这可以帮助您避免编写样板代码.但是,由于我不知道您必须执行什么样的复杂验证,我不知道它是否符合您的需求.
此外,我认为您不应该担心在构建之前验证所有内容.只需构造它并在之后进行验证:然后,如果它违反了验证规则,您可以丢弃它(即不要将其保留在任何地方).
标签:java,inheritance,validation,class-hierarchy 来源: https://codeday.me/bug/20190625/1286444.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。