一、灵魂拷问
Java作为面向对象的编程语言,使用Java编程的你面向对象了吗?
二、CRUD Boy现状
起初学习Java时,老师给我们介绍了Java语言各种面向对象的特性:封装(属性、方法)、继承、多态、关联关系(关联、依赖、组合、聚合)等等,当时觉得Java很牛B。工作了以后,写着写着代码连我们自己都没有觉察到我们写下Java代码已经变味了,好像丢失了面向对象分析与设计的精髓,似乎跟面不面向对象没啥关系了。作为一名 资深后端CRUD Boy,对于SpringMvc代码信手拈来,随便啥功能上来都这么整:
- 数据库设计(实体表、关系表)
- 设计接口、定义Controller
- 使用Mybatis定义DAO接口、映射DB实体关系为Java POJO(实体对象、关系对象、贫血模型)
- 编写Service写业务逻辑(事务脚本)、调用DAO操作POJO
细心点就会发现,这里哪有面向对象啊?
- POJO实体对象,仅有属性和getter/setter方法,对象的业务操作根本没有,严格来说不算是面向对象建模
- Service有面向对象吗?完全就是面向过程编程,用方法(事务脚本)怼操作。
- Controller为接口层,处理用户请求,纯技术维度的, 跟对象建模没关系。