Open joeaniu opened 1 year ago
POJO(Plain Ordinary Java Object) : 在本规约中, POJO 专指只有 setter / getter / toString 的简单类, 包括 DO / DTO / BO / VO 等。
BO(Business Object): 业务对象, 可以由 Service 层输出的封装业务逻辑的对象。
显然阿里巴巴规约重新定义了POJO。国际通用的解释是(Plain Old Java Object),其内涵是:不要强制继承或实现特定框架的基类或接口,也不要强制添加annotation,即可称为POJO;
个人观点,这样的重新定义十分不妥,容易造成更大范围的理解分歧。
另外,阿里巴巴的POJO定义,也和第五条BO的定义相互冲突:BO要求封装业务逻辑,而阿里巴巴POJO要求只有getters,setters等,这么明显的冲突应该改掉。 而且, 阿里巴巴POJO非常强烈的暗示使用贫血模型,很不好。
阿里巴巴现有的POJO定义等同于Java Bean规范,可以新造一个词类似于Simple Java Bean等;将POJO重新回归业界定义,即Plain Old Java Object,不要制造分裂;
规约原文
POJO(Plain Ordinary Java Object) : 在本规约中, POJO 专指只有 setter / getter / toString 的简单类, 包括 DO / DTO / BO / VO 等。
BO(Business Object): 业务对象, 可以由 Service 层输出的封装业务逻辑的对象。
问题描述
显然阿里巴巴规约重新定义了POJO。国际通用的解释是(Plain Old Java Object),其内涵是:不要强制继承或实现特定框架的基类或接口,也不要强制添加annotation,即可称为POJO;
个人观点,这样的重新定义十分不妥,容易造成更大范围的理解分歧。
另外,阿里巴巴的POJO定义,也和第五条BO的定义相互冲突:BO要求封装业务逻辑,而阿里巴巴POJO要求只有getters,setters等,这么明显的冲突应该改掉。 而且, 阿里巴巴POJO非常强烈的暗示使用贫血模型,很不好。
修改建议
阿里巴巴现有的POJO定义等同于Java Bean规范,可以新造一个词类似于Simple Java Bean等;将POJO重新回归业界定义,即Plain Old Java Object,不要制造分裂;