编程范式

结构化编程

结构化编程采用顺序结构,分支结构,循环结构代替goto语句,它对程序控制权的直接转移进行了限制和规范。

面向对象编程

面向对象编程中有三个概念:封装,继承,多态,这些特性并不是面向对象编程所独有的,在C语言中也能实现这三种特性:

  • 封装:头文件和源文件也是封装的一种,头文件暴露接口,源文件隐藏实现细节。
  • 继承:如果A结构体和B结构体前面的结构一样,那么我们可以说B继承了A。
  • 多态:使用函数指针可以实现多态。

虽然面向对象编程在这三个特性中没有创新,但它让这些特性变的更安全和方便使用了, 其中最有用的是多态,它让我们可以控制程序中的依赖关系,将高层策略性组件与底层实现性组件相分离,例如依赖反转(A对象需要调用B对象的F方法,这个时候A依赖B。如果改为A对象调用I接口的F方法,B对象实现I接口的F方法,那就变成了B依赖A)。

面向对象编程使用多态来限制用户对函数指针的使用,它对程序控制权的间接转移进行了限制和规范。

函数式编程

所有的竞争问题,死锁问题,并发更新问题都可变变量导致的,如果变量永远不会被更改,那就不可能产生竞争或并发更新问题,如果锁状态是不可变的,那就永远不会产生死锁问题。

一个架构设计良好的程序应该将状态修改的部分和不需要修改的部分隔成单独的组件,然后用合适的机制保护可变量。程序的大部分逻辑应该归于不可变组件中,可变状态组件的逻辑应该越少越好。

假设银行不保存具体账户余额,仅仅保存事务日志,每当有人要查询余额时,就将交易记录全部取出然后累计,这样就不需要维护任何可变变量了。这种数据存储模式不存在删除和更新,我们的程序不是CRUD,而是CR,源代码管理程序就是这样工作的。

函数式编程一般不允许修改变量的值,它对程序中的赋值进行了限制和规范。

你可能感兴趣的:(编程范式)