今天学习《番外篇》第1章认识计算机世界的第5课,认识面向对象有关的基本概念。
学习目标
- 了解面向对象的三个基本特征;
- 了解面向对象设计思想的6个基本原则,什么是单一职责原则、开放封闭原则、里氏替换原则、迪米特原则、接口隔离原则和依赖倒置原则;
- 了解什么是设计模式。
主要知识点
- 面向对象编程,英文是 Object Oriented Programming,简称 OOP,是一种通用的软件设计思想,它将复杂的事物关系从现实世界中抽离出来,以对象为单位设计其属性及方法,让不同对象之间发生作用和联系,从而实现软件设计目标的软件设计思想。
- 面向对象语言例如 C++、Java、Swift 、JavaScript 等,都有三个基本特征:封装、继承和多态。
- 封装,主要是指将数据,以及对数据的操作方法,封装在对象内部,对外仅暴露有限且必要的属性和方法。
- 对于JS新语法,如果浏览器等宿主环境尚未支持,只可以使用Babel进行转化。
- 继承指子类继承父类的属性及方法,达到复用与扩展的目的。
- 多态指同一个对象引用,在不同情况下的不同表现。当对象引用是一个接口类型时,实现该接口的不同的实体类,它们的同一方法因为实现不同,而具有不同的表现;当对象引用是一个父类类型时,继承该父亲的所有子类,它们的同一方法如果重写了,也会有不同的表现。
- 单一职责原则:单一职责要求每个类只负责一个功能,或相关的一类功能。
- 开放封闭原则:对扩展开放,对修改封闭。
- 里氏替换原则:子类对象可以替换父类对象,父类能出现的地方,子类亦能出现,但反过来却不可以。
- 迪米特原则(自闭原则):这条原则也称自闭原则,一个类对自己依赖的类或对象,知道得越少越好。
- 接口隔离原则:保持接口的简单独立,设计多个特定用途的小接口,好过设计一个用途宽泛的大接口。
- 依赖倒置原则:对象间的依赖关系要建立在抽象类型上,而非具体类型上。
- 什么设计模式?设计模式英文叫 Design pattern,是面向对象编程中反复使用的代码编写范式,是面向对象软件设计的经验总结。如果说面向对象是武功心法,那么设计模式就是与这套心法匹配的具体招式。
实践疑难点
- 在终端中安装Babel工具,涉及两个模块的安装:@babel/cli@7.20.7和@babel/core@7.0.0。安装时最好对应上版本号,在安装Node.js所有模块时,都应该注意指定版本号,而不是一味安装最新版本。
- 本步已开始接触到源码,在公众号艺述论回复10000下载所有源码,找到对应的源码文件,尝试在终端中运行。所有源码都是作者亲自编写并测试过的,都可以正常运行。在书中每个代码示例的顶部,注意观察,一般都有一个文件相对地址:
在下载的源码目录中找到这个文件,运行它即可。本步源码不要求手写,仅是能够在终端中使用Babel工具运行它即可。关于Babel工具的详细安装及使用方法,在前端篇第1课中有详细介绍。
小结
6个面向对象设计原则仅是人们普遍总结出来的原则,在别的地方可能是4个原则,也可能是8个原则,这不重要。重要的是,所有面向对象设计原则,本质都是为了实现高内聚、低耦合的软件设计目标。当语言发生变化的时候,6个设计原则会变化,但这个总的设计目标不会变化。