当前位置:首页 > Web开发 > 正文

数据和业务逻辑被分割到不同的类中

2024-03-31 Web开发

标签:

贫血模型 贫血模型例子

此刻传统的MVC开发根基上都是贫血模型 如以下代码 我们事情中经常使用

////////// Controller+VO(View Object) ////////// public class UserController { private UserService userService; //通过结构函数或者IOC框架注入 public UserVo getUserById(Long userId) { UserBo userBo = userService.getUserById(userId); UserVo userVo = [...convert userBo to userVo...]; return userVo; } } public class UserVo {//省略其他属性、get/set/construct要领 private Long id; private String name; private String cellphone; } ////////// Service+BO(Business Object) ////////// public class UserService { private UserRepository userRepository; //通过结构函数或者IOC框架注入 public UserBo getUserById(Long userId) { UserEntity userEntity = userRepository.getUserById(userId); UserBo userBo = [...convert userEntity to userBo...]; return userBo; } } public class UserBo {//省略其他属性、get/set/construct要领 private Long id; private String name; private String cellphone; } ////////// Repository+Entity ////////// public class UserRepository { public UserEntity getUserById(Long userId) { //... } } public class UserEntity {//省略其他属性、get/set/construct要领 private Long id; private String name; private String cellphone; }

我们将所有业务逻辑都写在servcie里面 将BO和业务逻辑按照service分分开了,这是一种面向过程的气势派头开发方法

充血模型 什么是充血模型

在贫血模型中,数据和业务逻辑被支解到差此外类中。充血模型(Rich Domain Model)正好相反,数据和对应的业务逻辑被封装到同一个类中。因此,这种充血模型满足面向东西的封装特性,,是范例的面向东西编程气势派头

什么是范围驱动设计

主要用来指导如何解耦业务系统,划分处事模块,界说业务范围模型及其交互  早在2014年就剔除,真正兴起是在微处事兴起的时候.微处事需要按照公司业务对处事进行合理的划分。而ddd正好可以做到指导的感化

实际上DDD也是传统的MVC三层  在service加了一层doman  跟贫血不一样的是 BO除了包罗数据 还包罗了对应数据的业务措置惩罚惩罚

贫血模型:重Service 轻Bo   充血模型:轻Service 重Bo

为什么基于贫血模型的传统开发模式如此受欢迎

大部分公司业务都对照简单,就算基于充血模型设计 模型也对照薄弱 ,与其绞尽脑汁设计充血模型不如直接使用贫血模型。而且业务也经常变 或者整体推翻重做

充血模式比贫血越发有难度,充血模型 是按照模型界说要袒露哪些操纵 而不是贫血模型 我们先界说好数据表布局 然后按照数据表布局有哪些业务 就在service添加对应措置惩罚惩罚业务的要领

思维固化此刻根基上的措施开发都是贫血模型 开发人员也是使用贫学模型,如果使用充血模型学习本钱增加

什么项目应该考虑使用基于充血模型的 DDD 开发模式

业务庞大的项目应该优先考虑使用DDD开发模式

因为贫血模型 我们是基于业务再service界说个对数据表CRUD的操纵,对业务耦合性对照大,无法重用,

而基于ddd则是按照模型界说好要袒露的操纵 然后在service按照业务使用这些袒露的操纵完成一系列业务,复用性更强 越庞大的系统对重用性要求更强

极客设计模式之美学习-传统MVC和DDD充血模型(二)

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32924.html