美文网首页
设计模式(0) 面向对象&设计原则

设计模式(0) 面向对象&设计原则

作者: 她是我的bug | 来源:发表于2019-02-04 19:51 被阅读0次

什么是面向对象

把客观的对象抽象成属性数据和对数据的相关的操作(也就是方法),把内部的细节和不想关的信息隐藏起来,把同一个类型的客观对象的属性数据和操作绑定在一起,封装成类,并且允许分成不同层次进行抽象,通过继承实现属性和操作的共享。

  • 面向对象的分析 OOA
  • 面向对象的设计 OOD
  • 面向对象的编程 OOP

继承

/**
 * 类 对象(实例)
 * 父类 Animal 是公共的
 */
class Animal {
  constructor(name) {
    this.name = name
  }

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

let animal = new Animal('动物')

animal.eat()

/**
 * 继承
 * 子类继承父类
 * 继承可以把公共方法抽离出来,减少冗余
 */
class Cat extends Animal {
  constructor(myName, age) {
    super(myName)
    this.age = age
  }

  speak() {
    console.log(`${this.name}: 喵喵~~`)
  }
}

let cat = new Cat('小花猫', 2)

cat.eat()
cat.speak()

封装

把数据封装起来,减少耦合,不该外部访问的不要让外部访问,利于数据的接口权限管理 ES6 目前不支持,一般认为_开头的都会私有的,不要使用,后面讲的会使用 ts

class person {
  public name // 公共的,类或者类外都可以访问,比如:你的名字谁都可以知道
  protected age // 受保护的自己和自己的子类可以访问,比如:女性的年龄
  private monney // 只有自己可以知道哦,私房钱

  constructor(name, age, monney) {
    this.name = name
    this.age = age
    this.monney = monney
  }

  getName() {
    console.log(this.name)
  }

  getAge() {
    console.log(this.age)
  }

  getMonney() {
    console.log(this.monney) // [ts] 属性 monney 为私有属性,只能在类 Person 中访问
  }
}

let person = new person('jack', 20, '10000')

多态

同一个接口可以不同实现,保持子类的开发性和灵活性,面向接口编程

class Animal {
  public name
  protected age
  private weight

  constructor(name, age, weight) {
    this.name = name
    this.age = age
    this.weight = weight
  }
}

class Person extends Animal {
  private monney

  constructor(name, age, weight, monney) {
    super(name, age, weight)
    this.monney = monney
  }

  speak() {
    console.log('hi hi')
  }
}

class Dog extends Animal {
  private monney

  constructor(name, age, weight) {
    super(name, age, weight)
  }

  speak() {
    console.log('汪汪~~')
  }
}

let p = new Person('jack', 10, 10, 10)
p.speak()

let d = new Dog('rose', 10, 10)
d.speak()

设计原则

单一职责原则

  • 一个程序只做好一件事
  • 如果功能特别复杂就拆分

开放封闭原则

  • 对扩展开放,对修改关闭
  • 增加需求时,扩展新代码,而非修改已有代码
  • 这是软件设计的终极目标
function parseJSON() {
  return response.json()
}

function checkStatus(response) {
  if (response.status >= 200 && response.status < 300) {
    return response
  }

  const error = new Error(response.statusText)
  error.response = response
  throw error
}

export default function requset(url, options) {
  return fetch(url, options)
    .then(checkStatus)
    .then(parseJSON)
    .then(data => data)
    .catch(err => ({ err }))
}

其他原则

  • 里氏替换原则
  • 接口隔离原则
  • 依赖倒置原则

相关文章

  • 面向对象设计原则

    面向对象设计原则 面向对象设计原则是设计模式的基础,每个设计模式都符合一一种或多种面向对象的设计原则。 常用的面向...

  • 面向对象:6大原则、24种设计模式

    接上一篇:面向对象介绍 为什么要学设计原则、设计模式? 若不学好经典设计模式,和通过设计模式理解面向对象的原则,你...

  • Swift设计模式----目录

    面向对象设计原则: 开闭原则 单一职责原则 依赖倒置原则 接口分离原则 迪米特法则 里氏替换原则 面向对象设计模式...

  • 设计模式的原则

    面向对象的原则是面向对象的目标,而设计模式是为了实现这些原则的手段和方法。这也就是为什么要有设计模式。 面向对象的...

  • 设计模式(0) 面向对象&设计原则

    什么是面向对象 把客观的对象抽象成属性数据和对数据的相关的操作(也就是方法),把内部的细节和不想关的信息隐藏起来,...

  • 设计模式

    1 软件设计原则和设计模式概览 1.1 面向对象设计原则 1.2 GOF设计模式 1.3 C嵌入式编程设计模式 ...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • Android 设计模式之常见设计模式总结

    今天我们来总结下我们所学习的设计模式 面向对象的六大原则 Android 设计模式之面向对象的六大原则 面向对象的...

  • 面向对象、设计原则、设计模式、编程规范、重构

    面向对象、设计原则、设计模式、编程规范、重构 面向对象 主流的三个编程风格有:面向对象,面向过程,函数式编程。 面...

  • 设计模式的设计原则

    设计模式的设计原则 面向对象五大设计原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 开闭原则 设计模...

网友评论

      本文标题:设计模式(0) 面向对象&设计原则

      本文链接:https://www.haomeiwen.com/subject/gozpsqtx.html