1. 什么是面向对象

在讲解 设计模式之前,我们先了解下

1. 什么是面向对象 ?

  • 把客观对象抽成属性数据和对数据的相关操作,把内部细节和不相关的信息隐藏起来。
  • 把同一个类型的客观对象属性数据和操作绑定在一起,封装成类。
  • 并且允许分开不同层次进行抽象,通过继承实现属性和操作的共享。
    1:面向对象分析 OOA 。
    1:面向对象设计 OOD 。
    1:面向对象编程 OOP 。

1.1 概念

  • 类,对象(实例)
  • 父类是公共的

下面实例 简单实现类的继承:

class Animal {
    constructor(name) {
        this.name = name
    }

    eat() {
        console.log(`${this.name}吃骨头`)
    }
}

class Dog extends Animal {
    constructor() {
        super('狗')
    }
    speak() {
        console.log('汪汪汪')
    }
}

let dog = new Dog()

dog.eat()   // 狗吃骨头
dog.speak()   // 汪汪汪

这应该是最简洁的一个类的继承了 。

面向对象的三大特性

1、封装

  • 把数据封装起来
  • 减少耦合,不该外部访问的不要让外部访问
  • 利于数据的接口权限管理
  • ES6目前不支持,一般认为 _ 开头的都是私有的,不要使用
  • 实现
    1. public 公有修饰符,可以在类的内部活类的外部使用pubilc修饰的属性或行为,默认修饰符。
    2. protected 受保护的修饰符,可以在本类或者之类使用 protected 修饰的属性或行为。
    3. private 私有修饰符,只可以在类内使用 private 修饰的属性或行为。

2、继承
提高代码复用性;继承是多态的前提。

3、多态

  • 统一接口可以不同实现
  • 保持子类的开放性和灵活性
  • 面向接口编程

对象的组成

1、方法 函数:过程、动态的

2、属性 变量:状态、静态的

五大设计原则

首字母 指代 概念
S 单一职责原则 一个程序只做好一件事,如果功能过于复杂就拆分开,每个部分保持独立
Q 开发封闭原则 对扩展开放,对修改封闭, 增加需求时,扩展新代码,而非修改已有代码
L 里氏替换原则 子类能覆盖父类, 父类能出现的地方子类就能出现 , js中使用较少(弱类型&继承使用较少)
I 接口隔离原则 保持接口的单一独立,避免出现“胖接口”, js中没有接口(typescript例外),使用较少
D 依赖倒置原则 面向接口编程,依赖于抽象而不依赖具体, 使用方只关注接口而不关注具体类的实现, js中使用较少(没有接口&弱类型)

下一篇:JS工厂模式 ,更多请关注:JaveScript设计模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容