小议javascript 设计模式 推荐

小议JavaScript设计模式

前言

JavaScript是一种弱类型、动态类型的解释性脚本语言,开发人员可以在编写代码的同时运行程序,这使得JavaScript成为了Web开发过程的重要组成部分。借助JavaScript设计模式,开发人员能够更加规范、优化自己的代码,提高代码的可维护性和可拓展性,使得自己称为一个优秀的程序员。

常见设计模式

Javascript设计模式分为不同的类别,有创建型、结构型和行为型,常见的设计模式包括:

创建型

  • 工厂模式(Factory Pattern)
  • 单例模式(Singleton Pattern)
  • 原型模式(Prototype Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 建造者模式(Builder Pattern)

结构型

  • 适配器模式(Adapter Pattern)
  • 桥接模式(Bridge Pattern)
  • 过滤器模式(Filter Pattern)
  • 组合模式(Composite Pattern)
  • 装饰器模式(Decorator Pattern)
  • 外观模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)

行为型

  • 责任链模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 观察者模式(Observer Pattern)
  • 状态模式(State Pattern)
  • 策略模式(Strategy Pattern)
  • 模板模式(Template Pattern)
  • 访问者模式(Visitor Pattern)

推荐学习的设计模式

单例模式

单例模式是一种创建型模式,它的目的是保证一个类只有一个实例,并提供一个全局访问点。在JavaScript中,单例模式常用来管理全局变量或创建只需要实例化一次的对象。

示例:

let Singleton = (function(){
  let instance;

  function createInstance(){
    let obj = new Object("I am the instance");
    return obj;
  }

  return {
    getInstance: function(){
      if(!instance){
        instance = createInstance();
      }
      return instance;
    }
  }
})();

let instance1 = Singleton.getInstance();
let instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // true

观察者模式

观察者模式是一种行为型模式,它定义对象之间的一种一对多的依赖关系,当某个对象的状态发生改变时,所有依赖它的对象都得到通知并自动更新状态。

示例:

function ObserverList(){
  this.observerList = [];
}
ObserverList.prototype.add = function(obj){
  return this.observerList.push(obj);
};
ObserverList.prototype.get = function(index){
  if(index>-1 && index<this.observerList.length){
    return this.observerList[index];
  }
};
ObserverList.prototype.count = function(){
  return this.observerList.length;
};
ObserverList.prototype.indexOf = function(obj,startIndex){
  let i = startIndex;

  while(i < this.observerList.length){
    if(this.observerList[i] === obj){
      return i;
    }
    i++;
  }
  return -1;
};
ObserverList.prototype.removeAt = function(index){
  this.observerList.splice(index,1);
};

function Subject(){
  this.observers = new ObserverList();
}
Subject.prototype.addObserver = function(observer){
  this.observers.add(observer);
};
Subject.prototype.removeObserver = function(observer){
  this.observers.removeAt(this.observers.indexOf(observer, 0));
};
Subject.prototype.notify = function(context){
  let observerCount = this.observers.count();
  for(let i=0; i < observerCount; i++){
    this.observers.get(i).update(context);
  }
};

function Observer(){
  this.update = function(){
    // ...
  };
}

结论

以上只是JavaScript设计模式的冰山一角,如果想要成为一名优秀的JavaScript程序员,需要不断深入学习、掌握不同分类的设计模式,并在实际开发中不断进行实践、摸索。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:小议javascript 设计模式 推荐 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JS使用ajax方法获取指定url的head信息中指定字段值的方法

    要使用JS获取指定URL的Head信息中指定字段值,需要使用Ajax方法,具体操作流程如下: 创建XMLHttpRequest对象 XMLHttpRequest对象是用于在后台与服务器交换数据的核心技术之一,能够在不刷新页面的情况下更新网页的局部信息。 const xhr = new XMLHttpRequest(); 用open方法指定请求信息 open方…

    JavaScript 2023年6月11日
    00
  • 利用jquery的获取JS文件中的字符串内容

    获取 JS 文件中的字符串内容,可以使用 jQuery 的 AJAX 功能来实现。具体步骤如下: 使用 $.get() 或 $.ajax() 函数向指定的 JS 文件发送 HTTP 请求,获取文件内容。 示例1: $.get(‘script.js’, function(data) { console.log(data); }); 在这个示例中,我们使用 $.…

    JavaScript 2023年5月27日
    00
  • js Event对象的5种坐标

    JS Event对象包含5种不同的坐标属性,它们可以用来描述事件的发生位置,这些坐标属性分别是: clientX和clientY pageX和pageY screenX和screenY offsetX和offsetY x和y 下面就逐一介绍这5种坐标属性的含义和使用方法: 1. clientX和clientY clientX和clientY属性用来获取事件的…

    JavaScript 2023年6月10日
    00
  • JS 实现计算器详解及实例代码(一)

    接下来我将详细讲解“JS 实现计算器详解及实例代码(一)”这篇文章的完整攻略。 文章概述 该文章是一篇教程,主要介绍如何使用JavaScript实现一个基本的计算器。该计算器可以进行加、减、乘、除四种运算,同时还可以进行按位取反、求余、正负号切换和小数点输入等功能。该文章主要包括以下几个部分: 介绍计算器的基本思路和需求分析 讲解HTML和CSS的基本结构和…

    JavaScript 2023年5月27日
    00
  • 浅谈JavaScript 声明提升

    浅谈JavaScript 声明提升 声明提升的概念 在JavaScript中,声明提升指的是在代码执行阶段,JavaScript引擎会把所有声明的变量和函数提升至当前作用域的顶部,但是赋值操作并不会提升。这意味着可以在变量和函数声明之前使用它们,因为它们已经被预处理并提升到作用域顶部。 变量声明提升 变量声明提升指的是在JavaScript引擎执行代码之前,…

    JavaScript 2023年5月18日
    00
  • js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色

    实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色的过程分为以下几步: HTML结构构建 先构建一个table,需要注意每个单元格需要有一个唯一的id值,如下所示: <table id="myGridview"> <thead> <tr> <th>ID</th>…

    JavaScript 2023年6月11日
    00
  • JavaScript实现获取两个排序数组的中位数算法示例

    下面给出详细讲解”JavaScript实现获取两个排序数组的中位数算法示例”的完整攻略: 一、题目简介 中位数是指将一个集合划分为两个长度相等的子集,其中一个子集中元素总是大于另一个子集中的元素。在计算机科学领域中,通常使用中位数来衡量数据集合的总体趋势。在给定的两个排序数组中,实现一个函数来查找两个排序数组合并后的中位数。 二、示例说明 示例一: 输入: …

    JavaScript 2023年5月28日
    00
  • 详解JS 比较两个Json对象的值是否相等的实例

    下面是“详解JS 比较两个Json对象的值是否相等的实例”的完整攻略: 实现方法概述 在JavaScript中,我们可以通过遍历两个json对象的每一个属性,比较它们的值是否相等来判断它们是否相等。如果两个json对象的每一个属性都相等,那么它们就相等。下面,我们详细介绍如何实现这个功能。 步骤1:遍历两个json对象的所有属性。 步骤2:判断它们的值是否相…

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