编程范型,或程序设计法(Programming paradigm),即一类典型的编程风格。
范式(paradigm),有模式和方法的意思。
模式(pattern),主体行为的一般方式,包括科学实验模式、经济发展模式、企业盈利模式等,是理论和实践之间的中介环节。
方法(method),在某种知识的领域上,对探索知识的原则或做法而作之分析。
一、指令式编程(Imperative programming)和声明式编程(Declarative programming)
大部分高级语言都支持四种基本的语句,运算语句,循环语句,条件分支语句,无条件分支语句。
指令式编程,需要基本语句描述执行流程,即计算机行为。
声明式编程,描述目标性质,而非流程。
例如,SQL,D3.js都是声明式编程的体现。
二、面向对象编程(Object Oriented Programming)
将代码组织到对象定义中。有时候成为类,它们将具有相关行为的数据分组在一起。
对象(或类)的三大特性,封装、继承、多态。
数据是对象的属性,行为(或功能)是方法。
对象结构使其在程序内具有灵活性。
对象可以通过调用数据并将其传递给另一个对象的方法来传递信息。
同时,新类可以从基类或父类接受或继承所有功能。
三、函数式编程(Functional Programming)
基于函数的开发方式,函数将输入映射为输出,从而产生结果。
函数式编程遵循的核心原则:
- 函数与程序状态或全局变量无关。它们仅取决于传递给它们的参数进行计算。
- 函数试图限制对程序状态的任何更改,并避免更改保存数据的全局对象。
- 函数在程序中具有最小副作用。
高阶函数(Higher-order function):将函数作为参数或将函数作为返回值。
回调函数(callback):传递到另一个函数中的函数。
拉姆达函数(lambda):传递给另一个函数,或从另一个函数返回的函数。
装饰器(decorator):增强函数的功能。
四、响应式编程(Reactive Programming)
响应式编程,是面向数据流和变化传播的编程范式。
编程语言可以很方便地表达静态或动态的数据流,相关的计算模型会自动将变化的值通过数据流进行传播。
例如,电子表格程序的单元格;MVC软件架构中,允许模型的变化自动反映到视图上,反之亦然。
五、面向切面编程(Aspect Oriented Programming)
面向切面编程,通过预编译方式和运行期间动态代理实现程序功能统一维护。
是面向对象编程的延续,是函数式编程的衍生。
针对处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合的隔离效果。
例如,通过OOP对“雇员”这样一个业务实体进行封装,通过AOP对“权限检查”这一动作片段进行划分。