目录

  • 贫血模型
  • ”贫血模型“的开发模式为什么会流行?
  • 总结:


贫血模型

传统的MVC结构包含以下三层:Model层、Controller层和View层。然而,在进行前后端分离之后,这个结构被调整为Controller层、Service层、Repository层。
其中,Controller层负责对外暴露接口,Service层处理核心业务逻辑,Repository层负责数据的读写。

在每个层次中,定义VO(View Object)、BO(Business Object)和Entity。VO、BO和Entity中仅仅定义数据,不会定义方法,所有操作数据的业务逻辑都定义在相应的Controller、Service或Repository类对象中。
这种面向过程的编程风格被称为“基于贫血模型的开发模式”,是现在非常常用的一种Web项目开发模式。

贫血模型将业务逻辑集中在Service层,而Controller层和Repository层相对较弱,主要职责是数据和请求的转发以及持久化。Entity层包含了应用程序所涉及的所有数据和状态,但通常没有业务逻辑的实现。

贫血模型具有代码简洁、易于理解和维护的优点,但其缺点也很显著,可能导致重复代码的出现,同时不同层之间的交互和依赖关系可能不够明确,也可能存在不良的代码设计。
因此,在使用贫血模型开发时应适度使用,并尝试使用更好的设计模式,例如DDD(领域驱动设计)或MVC(模型-视图-控制器)。

”贫血模型“的开发模式为什么会流行?

1、实现简单。Object仅仅作为传递数据的媒介,不用考虑过多的设计方面,将核心业务逻辑放到service层,用Hibernate之类的框架一套,完美解决任务。
2、上手快。使用贫血模式开发的web项目,新来的程序员看看代码就能“照猫画虎”干活了,不需要多高的技术水平。所以很多程序员干了几年,仅仅就会写CURD。
3、一些技术鼓励使用贫血模型。例如J2EE Entity Beans,Hibernate等。

总结:

各种模型的好坏讨论一直不断,企业需要的是使用合适的技术把任务完成,从这个角度来说当下管用模型就是好模型。当然我们也要持开放的心态接受新的技术和思想,并结合业务的实际需要选择合适的技术。

个人觉得,MVC这种框架模式本质上与面向对象并不冲突。当我们在讨论面向对象的时候,我们究竟应该怎样去定义一个对象,究竟什么才能被我们看成是对象,是不是只有像某种物体,比如说一只鸟或者一只狗我们才能去把他定义为对象?
我认为,MVC里面的三个部分Model 、Controller 、View 我们都能把他们单独的看成一个对象,比如说Model,本来它是数据单元,但是如果我们把他看做一个对象的话,里面存储的数据不就是我们对象里的属性么,而对于数据的二次加工处理等等操作不就是对象里的方法么?
同理,对于View而言,里面小的view组件或者是其他的view不就是我们对象里面的属性,而对于不同的view组件或其他view的组合或者其他的处理操作不就是对象里面的方法么?
所以说,不必死抠定义,数据就一定要和业务逻辑组成一个类云云。。。
我们最后写出来的代码的目的就是,1.要解决问题;2.代码有可扩展性,可读性;3,代码解耦;