面向对象操作:将数据拿出来后去做数据对象然后再用工具类去使用
面向对象操作:
C#
cart.clear()
//等同于面向过程:
Cart.clear(cart)
导致了领域设计的充血和贫血的争议出现
贫血模式
- 贫血模型是指领域对象里只有get和set方法(POJO),所有业务逻辑都不包含在内而是放在Business Logic层
- “行为”(逻辑、过程)和”状态”(数据,对应到语言就是对象成员变量)分离到不同的对象
- 我们常见的N层结构中的Logic/Service/Manager层
- Manager层的由来
- Service层容易代码臃肿,很容易出现大事务,事务嵌套,导致问题很多,而且极难排查
- 增加了Manager层,它与Service层的关系是:Manager层提供原子的服务接口,Service层负责依据业务逻辑来编排原子接口
充血模式
- 数据和对应的业务逻辑被封装到同一个类中。因此,这充血模型满足面向对象的封装特性,是典型的面向对象编程风格。
- 传统的设计一般是:
- 类:Cart+CartManager;
- 保存用户调用:cartManager.clear(Cart cart)
- 充血的设计则可能会是:
- 类:Cart;
- 保存用户调用:cart.clear();