JavaScript面向对象之七大基本原则实例详解

yizhihongxing

JavaScript面向对象之七大基本原则实例详解

本文将向大家介绍面向对象编程的七大基本原则,并结合示例详细讲解这些原则的实现方法。

七大基本原则

  1. 单一职责原则(SRP)

单一职责原则是指一个类只应该有一个单一的功能。如果一个类承担了过多的职责,那么这个类就会变得不可控,难以维护,并且不易复用。

  1. 开放封闭原则(OCP)

开放封闭原则是指软件实体(类、模块、函数等)应该可以扩展,但是不可修改,即对扩展开放,对修改封闭。

  1. 里氏替换原则(LSP)

里氏替换原则是指任何基类可以出现的地方,子类一定可以出现。

  1. 接口隔离原则(ISP)

接口隔离原则是指使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖那些它不需要的接口。

  1. 依赖倒置原则(DIP)

依赖倒置原则是指高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。

  1. 迪米特法则(LKP)

迪米特法则是指一个对象应该对其他对象有最少的了解。一个类应当对自己需要耦合或调用的类知道得最少,并且这些类也应该尽量地减少对其他类的了解。

  1. 合成复用原则(CRP)

合成复用原则是指在一个新的对象里通过关联关系来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。

实例说明

单一职责原则实例

// 示例1:不遵循单一职责原则的类
class SalesReport {
  constructor(salesData) {
    this.salesData = salesData;
  }

  generateReport() {
    // 生成销售报告的代码
  }

  saveReport() {
    // 保存销售报告的代码
  }

  sendReport() {
    // 发送销售报告的代码
  }
}

// 示例2:遵循单一职责原则的类
class SalesReport {
  constructor(salesData) {
    this.salesData = salesData;
  }

  generateReport() {
    // 生成销售报告的代码
  }
}

class ReportSaver {
  constructor(report) {
    this.report = report;
  }

  saveReport() {
    // 保存销售报告的代码
  }
}

class ReportSender {
  constructor(report) {
    this.report = report;
  }

  sendReport() {
    // 发送销售报告的代码
  }
}

开放封闭原则实例

// 示例1:不遵循开放封闭原则的类
class Shape {
  constructor(type) {
    this.type = type;
  }

  getArea() {
    if (this.type === 'square') {
      return this.width * this.width;
    } else if(this.type === 'rectangle') {
      return this.width * this.height;
    }
  }
}

// 示例2:遵循开放封闭原则的类
class Shape {
  constructor() {}

  getArea() {}
}

class Square extends Shape {
  constructor(width) {
    super();
    this.width = width;
  }

  getArea() {
    return this.width * this.width;
  }
}

class Rectangle extends Shape {
  constructor(width, height) {
    super();
    this.width = width;
    this.height = height;
  }

  getArea() {
    return this.width * this.height;
  }
}

通过以上两个示例,我们可以看出单一职责原则和开放封闭原则的不同实现方式,并且这些原则能够使我们的代码更加易于维护和扩展。在实际开发中,合理的运用这些原则可以使我们的代码更加健壮和优美。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript面向对象之七大基本原则实例详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JS简单生成两个数字之间随机数的方法

    生成两个数字之间的随机数在开发中是很常见的需求,下面我将为大家提供 JS 简单生成两个数字之间随机数的攻略: 使用 Math.random() 方法 Math.random() 方法返回一个介于 0 到 1 之间的随机数。我们可以使用该方法生成两个数字之间的随机数。 在获取到随机数后,我们可以将其范围转换为两个数字之间的随机数,例如要生成 1 到 100 之…

    JavaScript 2023年5月28日
    00
  • javascript去掉代码里面的注释

    下面是“JavaScript去掉代码里面的注释”的完整攻略: 步骤一:复制代码 首先,需要将所要去除注释的JavaScript代码复制到一个新的文本文件中。可以使用文本编辑器完成该步骤。 步骤二:使用正则表达式去除注释 在新的文本文件中,我们可以使用正则表达式(Regular Expression)去除代码里面的注释。以下是基于正则表达式的两个示例: 示例一…

    JavaScript 2023年6月11日
    00
  • javascript与java有什么关系(区别与相似)

    JavaScript和Java这两个词看起来很相似,但它们是两个完全不同的编程语言。在这篇文章中,我们将讨论JavaScript和Java之间的区别和相似之处。 区别 语法不同 JavaScript和Java有完全不同的语法。JavaScript语法更为简单,而Java则需要更多的代码和结构。JavaScript采用的是弱类型变量,因此在声明变量并定义其类型…

    JavaScript 2023年5月27日
    00
  • 微前端qiankun沙箱实现源码解读

    我们来详细讲解一下“微前端qiankun沙箱实现源码解读”的完整攻略。 什么是微前端 首先,我们需要知道什么是微前端。简单地说,微前端是一种前端架构模式,它将大型Web应用程序分解为较小的、易于管理的模块,这些模块可以独立地开发、测试和部署。每个模块可以由不同的团队开发,并且可以以不同的速度进行更新和发布。这种模式使得公司可以更加灵活地开发和部署前端应用程序…

    JavaScript 2023年6月11日
    00
  • ajax的两种提交方式(get/post)和两种版本

    让我给您讲一下关于”ajax的两种提交方式(get/post)和两种版本”的完整攻略。 ajax的两种提交方式 在使用ajax进行数据请求的时候,我们可以使用两种提交方式:GET和POST。 GET方式 优点:比较简单明了,url中直接可以看到请求参数。请求的是缓存数据时,请求速度较快。 缺点:传参长度有限制,不适合传输大块数据。因为参数卸载url后,传输的…

    JavaScript 2023年6月11日
    00
  • ES6模板字符串和标签模板的应用实例分析

    下面是关于 “ES6模板字符串和标签模板的应用实例分析” 的完整攻略。 ES6模板字符串 ES6模板字符串是一种新的字符串类型,用反引号 (`) 包裹字符串,可以使用 ${} 语法插入变量和表达式。它们也可以跨越多行而不需要添加额外的转义字符。 下面是一个示例,使用ES6模板字符串构建HTML模板: const name = ‘John’; const ag…

    JavaScript 2023年5月28日
    00
  • JS判断两个时间大小的示例代码

    JS判断两个时间大小是一个比较常用的功能,常用于比较两个时间先后顺序,以便进行时间排序、时间筛选等操作。下面是我为大家提供的几个示例代码及攻略。 示例一:使用Date对象实现时间比较 首先,我们需要知道JS中的Date对象是一个非常方便的时间操作工具,它可以将日期和时间存储为一个数字值,然后可以方便地进行各种处理和比较。 以下是使用Date对象实现判断两个时…

    JavaScript 2023年5月27日
    00
  • getElementByID、createElement、appendChild几个DHTML元素第2/2页

    针对这几个DHTML元素,我们一个一个来详细讲解。 getElementByID getElementByID 方法是用于通过 id 属性获取 HTML 元素的方法。它返回一个代表指定元素的对象。使用该方法时,需要在 HTML 元素上指定一个唯一的 id 属性,例如: <div id="example"></div&gt…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部