贫血开发模式

传统的MVC结构分为: Model 层, Controller 层, View层.

而做为前后端分离的MVC变为后端被分为: Controller, Service, Model 层.

  1. Controller 层负责暴露接口给前端调用.
  2. Service 层负责核心业务逻辑
  3. Model 层负责数据读写

以上为典型的面向过程的编程风格.也称为分血模式的开发模式

这也是我们现在非常常用的一个 Web项目的开发模式.

Tip: 与之相对是充血开发模式即DDD, 也称领域驱动设计

面向过程VS面向对象

面向过程编程风格是一种符合我们人脑思维方式. 如同在生活中, 你去完成一个任务:

  1. 先做什么
  2. 后做什么
  3. 最后完成整个任务

面向对象编程风格是一种自底向上的思维方式, 它不是先去按照执行流程来分解任务:

  1. 先将任务翻译成一个一个小的模块(也就是类)
  2. 然后设计类之间的交互
  3. 最后按照流程将类组装起来
  4. 完成整个任务

面向过程与面向对象是互相协作完成整个项目的

  1. 面向过程编程是面向对象编程的基础
  2. 面向对象编程离不开基础的面向过程编程.
    1. 如一个方法的实现逻辑即是一个面向过程的逻辑.

Tip: 我们编程最终的目的是写出易维护, 易读, 易复用, 易扩展的高质量代码.

面向对象编程常见的坑

面向对象的封装特性的本质就是通过设置访问权限隐藏代码

  1. 随意设置 Public 权限

    1. 解决方法: 慎重使用 Public , 使用之前询问自己
      1. 为什么要开放
      2. 开放会带来哪些后果.
  2. 滥用全局变量和全局方法

    1. 从分配内存空间: 全局变量, 静态局部变量, 静态全局变量都在静态存储区分配空间, 而局部变量在栈分配空间.
    2. 从作用域来看: 破坏边界, 不利后续调试等.

常用的面向过程场景

  1. 编写Shell 脚本.
  2. 数据处理
  3. 算法为主, 数据为辅.
  4. 微小程序