即使问题不是新问题,这也是一个很好的问题.作为一个行业,多年来我们经常在这个问题上改变“传统智慧”.你今天得到的答案不一定是5年前或未来5年.
在想象我如何处理这个项目时,我想知道你没有说过的一些事情:你的应用程序是Dog实体的“记录系统”吗?关于Dog实体需要了解的其他子系统/层/应用程序.
在Java中,当你编写像Animal>这样的全新类型时狗,你得到以下奖励:有机会写一大堆知道如何与Animal对象和Dog对象交互的代码.我在2010年不太相信这是一个比五年前好的主意.
您是否负责设计存储狗信息的数据库?我们过去常常这样做,但现在我经常发现自己整合了实际由其他系统管理的数据记录:谷歌API,LDAP实体,数据仓库,诸如peoplesoft等产品.
如果你不负责定义狗是什么以及它们如何与宇宙互动,我会看一种与域无关的方法来模拟记忆中的狗信息.有吨:XML / DOM,JSON,Map等.
以这些格式移动其他人的数据的好处很多……
>您不必编写POJO
>这些功能丰富,文档和测试都很丰富
>有许多现有的API可以转换,操作和序列化这些生物
>您可以在其他域中重用您的视图/控制器/其他代码
另一方面……如果您是Dog数据的记录系统,请考虑使用接口而不是抽象类.或者可能是接口和抽象类. Java只有单继承;将您的视图/控制器/其他代码绑定到接口,以保证最大的未来灵活性.