贫血开发模式
传统的MVC结构分为: Model 层, Controller 层, View层.
而做为前后端分离的MVC变为后端被分为: Controller, Service, Model 层.
- Controller 层负责暴露接口给前端调用.
- Service 层负责核心业务逻辑
- Model 层负责数据读写
以上为典型的面向过程的编程风格.也称为分血模式的开发模式
这也是我们现在非常常用的一个 Web项目的开发模式.
Tip: 与之相对是充血开发模式即DDD, 也称领域驱动设计
面向过程VS面向对象
面向过程编程风格是一种符合我们人脑思维方式. 如同在生活中, 你去完成一个任务:
- 先做什么
- 后做什么
- 最后完成整个任务
面向对象编程风格是一种自底向上的思维方式, 它不是先去按照执行流程来分解任务:
- 先将任务翻译成一个一个小的模块(也就是类)
- 然后设计类之间的交互
- 最后按照流程将类组装起来
- 完成整个任务
面向过程与面向对象是互相协作完成整个项目的
- 面向过程编程是面向对象编程的基础
- 面向对象编程离不开基础的面向过程编程.
- 如一个方法的实现逻辑即是一个面向过程的逻辑.
Tip: 我们编程最终的目的是写出易维护, 易读, 易复用, 易扩展的高质量代码.
面向对象编程常见的坑
面向对象的封装特性的本质就是通过设置访问权限隐藏代码
随意设置 Public 权限
- 解决方法: 慎重使用 Public , 使用之前询问自己
- 为什么要开放
- 开放会带来哪些后果.
- 解决方法: 慎重使用 Public , 使用之前询问自己
滥用全局变量和全局方法
- 从分配内存空间: 全局变量, 静态局部变量, 静态全局变量都在静态存储区分配空间, 而局部变量在栈分配空间.
- 从作用域来看: 破坏边界, 不利后续调试等.
常用的面向过程场景
- 编写Shell 脚本.
- 数据处理
- 算法为主, 数据为辅.
- 微小程序