例如,在编写JPA或Hibernate代码时,我可能想创建一个域类的后代,比如Account。下降版本表示用户显示的表单。表单只有大约一半的帐户字段。因此,我用来保存表单值的对象不应该更改其他字段。
使用继承来更改被认为是错误的注释吗?假设不是,有没有好的短手或设计模式来做得更好或更有效?
答案 0 :(得分:2)
我会说你在这里描述的情况(至少我是如何理解的)不适合创建子类。
基本上你想限制表单只改变实体的某些字段/关联,对吧?我进一步假设您不相信表单的开发人员只更改了应该可编辑的字段,因此需要限制它。
在这种情况下,一个选项可能是使用DTO pattern(数据传输对象):为表单数据创建DTO并让用户填充其字段。然后将DTO传递给相应更新实体的服务。这样您就可以控制哪些字段可以编辑以及如何执行更新。
另一种方法可能是为实体创建一个包装器,当调用不可编辑字段的setter时抛出异常。但是,这将是一个运行时解决方案,我更喜欢这里的DTO方法。
编辑:
在这种情况下,继承可能会出现问题的一些原因: