小议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日

相关文章

  • JavaScript实现抖音罗盘时钟

    下面我将详细讲解如何用JavaScript实现抖音罗盘时钟。 准备工作 在编写JavaScript代码之前,我们需要先准备好HTML和CSS文件。HTML文件中包含了页面布局的基本结构,CSS文件中定义了页面对应的样式。具体代码如下: <!DOCTYPE html> <html lang="en"> <hea…

    JavaScript 2023年5月27日
    00
  • JavaScript中实现sprintf、printf函数

    在JavaScript中,有时候需要格式化字符串输出,针对此需求,可以使用sprintf、printf函数来实现。 sprintf函数的实现 sprintf函数的作用是将指定的格式化字符串输出到一个字符串中。JavaScript中没有原生实现sprintf函数的方法,但是可以通过自定义实现函数来达到此目的。 下面是一个使用sprintf函数实现字符串格式化输…

    JavaScript 2023年5月27日
    00
  • script标签的 charset 属性使用说明

    当我们在网页中引入外部脚本文件时,我们通常会使用script标签。在这个标签中,我们可以使用charset属性来指定这个外部脚本文件的字符编码类型。 什么是编码类型 在HTML中使用的字符编码类型主要有两种:ASCII编码和Unicode编码。ASCII编码是一个7位编码,只能表示128种字符;而Unicode编码是一个用于文字符号的数字编码,它支持全球市场…

    JavaScript 2023年5月20日
    00
  • vue 获取url里参数的两种方法小结

    下面我将为您详细讲解“vue 获取url里参数的两种方法小结”的完整攻略。 一、 获取参数的两种方法 方法一:使用正则表达式 这种方法需要使用正则表达式来获取url里的参数,步骤如下: 获取当前页面的url let url = window.location.href; 编写正则表达式,获取url里的参数 假设我们要获取名为“id”的参数,正则表达式如下: …

    JavaScript 2023年6月11日
    00
  • Javascript中实现String.startsWith和endsWith方法

    首先,需要明确的是,JavaScript中并没有内置的startsWith和endsWith方法,我们需要手动实现这两个方法。 实现startsWith方法 startsWith方法用于检查字符串是否以指定的子串开头。下面是一份实现这个方法的JavaScript代码: String.prototype.startsWith = function(startS…

    JavaScript 2023年5月19日
    00
  • 浅谈JavaScript中数组的增删改查

    应该先给出一个简要的结构: 目录 前言 JavaScript中数组的增删改查 数组创建 数组增加元素 数组删除元素 数组修改元素 数组查询元素 数组循环元素 总结 前言 JavaScript中数组的增删改查是编程中常见的操作之一,掌握这些操作可以让我们更加灵活地处理数据。 JavaScript中数组的增删改查 JavaScript中,数组是一种数据结构,用来…

    JavaScript 2023年5月27日
    00
  • JS中令人发指的valueOf方法介绍

    下面是详细讲解 “JS中令人发指的valueOf方法介绍”的完整攻略。 什么是valueOf方法? 在Javascript中,每个对象都具有一个valueOf()方法。这个方法返回对象的原始值。当我们需要将对象转换为原始值时,Javascript会自动调用这个方法。 valueOf的使用方法 valueOf方法使用非常简单。我们只需要调用对象上的这个方法就可…

    JavaScript 2023年5月27日
    00
  • JS获取当前日期时间并定时刷新示例

    获取当前日期时间并定时刷新是一个常见的前端需求,可以通过JavaScript实现。下面将详细介绍如何实现这个功能并提供两条示例说明。 步骤一:获取当前日期时间 我们可以使用JavaScript中的Date对象来获取当前日期时间。可以使用Date类的方法getYear(),getMonth(),getDay(),getHours(),getMinutes()和…

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