编程范式(Programming paradigm)
课程背景
- 前端的主要编程语言为
JavaScript
; JavaScript
作为一种融合了多重编程范式的语言,灵活性非常高;- 前端开发人员需要根据场景在不同编程范式之间自如切换;
- 进一步需要创造领域特定语言抽象业务问题。
编程语言
C/C++
- C:“中级语言”过程式语言代表
- 可对位,字节,地址直接操作
- 代码和数据分离倡导结构化编程
- 功能齐全:数据类型和控制逻辑多样化
- 可移植能力强
eg. C语言可以通过指针操作地址
- C++:面向对象语言代表(在C语言的基础上增加了
类
)
- C with Classes
- 继承
- 权限控制
- 虚函数
- 多态(对同一个基类下的所有子类进行相同的操作)
- Lisp:函数式语言代表
- 与机器无关
- 列表:代码即数据
- 闭包
- JavaScript(1995年出现):基于原型和头等函数的多范式语言
- 过程式
- 面向对象
- 函数式
- 响应式等
编程范式
过程式编程
算法+数据结构=程序
特点:
自顶向下
和结构化编程
结构化编程
js中的面向对象
通过
export
导出模块中的一些变量、函数等
面向过程式编程有什么缺点?
- 函数与操作对象之间没有很强的关联性,很难看出调用关系
- 没有封装的概念,不利于后期修改和扩充
- 不利于代码重用
面向对象编程
- 封装
- 继承
- 多态
- 依赖注入
封装
将客观的事物封装成具体的类,类可以把自己的数据和方法只让可信的对象进行操作,对于不可信的对象进行隐藏。
继承
让某一个类型的对象获得另一个类型对象的属性和方法。支持按级分类,可以使用现有类的所有功能,并且在无需编写原有类的情况下进行功能扩充。
多态
实现不同的结构可以进行接口共享,进而达到函数复用。
依赖注入
能够去除代码耦合。 理解依赖注入(DI – Dependency Injection) - 知乎 (zhihu.com)
面向对象编程五大原则
- 单一职责原则:一个类的功能要单一
- 开放封闭原则:一个模块在扩展性方面应该是开放的,在更改性方面应该是封闭的
- 里氏替换原则:子类应该可以替换父类,并且出现在任何父类应该出现的地方
- 依赖倒置原则:具体依赖抽象,上层依赖下层
- 接口分离原则:任何时候应该通过接口区分,而不要依赖具体内容的实现
面向对象的缺点
数据的修改历史完全被隐藏了,是通过一系列补丁来拼凑程序