本文主要是介绍Java 领域模型之失血、贫血、充血、胀血模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.失血模型
失血模型仅仅包含数据的定义和getter/setter方法,业务逻辑和应用逻辑都放到服务层中。这种类在Java中叫POJO。
action
service: 核心业务(复杂度:重)
model:简单Set Get
dao :数据持久化
@Setter
@Getter
public class Commodity {private Long commodityId;private String commodityName;}@Setter
@Getter
public class Order {private Long orderId;private Long commodityId;private Date createTime;}
2.贫血模型
贫血模型中包含了一些业务逻辑,但不包含依赖持久层的业务逻辑。这部分依赖于持久层的业务逻辑将会放到服务层中。
action
service :简单服务组合、事务管理(复杂度:中)
model:Set Get的基础上添加简单逻辑处理(复杂度:中)
dao:数据持久化
@Setter
@Getter
public class Commodity {private Long commodityId;private String commodityName;}@Setter
@Getter
public class Order {private Long orderId;private Long commodityId;private Commodity commodity;private Date createTime;public Order(Commodity commodity) {this.commodity = commodity;}}public class OrderService {@Resourceprivate OrderMapper orderMapper;@Resourceprivate CommodityMapper commodityMapper;public Order getOrderById(Long orderId) {Order order = orderMapper.getById(orderId);order.setCommodity(commodityMapper.getById(order.getCommodityId()));return order;}}
3.充血模型
充血模型中包含了所有的业务逻辑,包括依赖于持久层的业务逻辑。使用充血模型的领域层是依赖于持久层。
action
service :简单服务、事务管理(复杂度:中-)
model:Set Get的基础上添加复杂逻辑处理(复杂度:中+)
@Setter
@Getter
public class Commodity {private Long commodityId;private String commodityName;}@Setter
@Getter
public class Order {private Long orderId;private Long commodityId;private Commodity commodity;private Date createTime;@Resourceprivate CommodityMapper commodityMapper;public Commodity getCommodity() {return commodityMapper.getById(this.commodityId);}}public class OrderService {@Resourceprivate OrderMapper orderMapper;public Order getOrderById(Long orderId) {return orderMapper.getById(orderId);}
}
4.胀血模型
胀血模型就是把和业务逻辑不想关的其他应用逻辑(如授权、事务等)都放到领域模型中。
action
model:Set Get的基础上添加复杂逻辑处理、事务处理(复杂度:重+)
这篇关于Java 领域模型之失血、贫血、充血、胀血模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!