当前位置: 首页 > news >正文

JavaScript高级:常见设计模式

设计模式是在软件开发中重复出现的问题的解决方案,它们是经过验证的、被广泛接受的最佳实践。设计模式可以让我们避免重复造轮子,提高代码质量和可维护性。在本文中,我们将介绍几种常见的设计模式,以及它们的实现和应用。

1. 单例模式

单例模式保证一个类只有一个实例,并提供全局访问点。在 JavaScript 中,可以通过闭包来实现单例模式。

const Singleton = (function() {let instance;function createInstance() {// 创建实例的逻辑return {};}return {getInstance: function() {if (!instance) {instance = createInstance();}return instance;}};
})();const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 输出:true

2. 工厂模式

工厂模式用于创建对象的方法,将对象的创建与使用分离,降低耦合度。在 JavaScript 中,可以通过构造函数或者简单工厂来实现工厂模式。

class Product {constructor(name) {this.name = name;}
}class ProductFactory {createProduct(name) {return new Product(name);}
}const factory = new ProductFactory();
const product = factory.createProduct('A');

3. 观察者模式

观察者模式定义对象间的一种一对多依赖关系,当一个对象状态发生改变时,其依赖者都会收到通知并自动更新。在 JavaScript 中,可以使用发布-订阅模式来实现观察者模式。

class Subject {constructor() {this.observers = [];}addObserver(observer) {this.observers.push(observer);}notify(message) {this.observers.forEach(observer => observer.update(message));}
}class Observer {update(message) {console.log(`Received message: ${message}`);}
}const subject = new Subject();
const observer1 = new Observer();
const observer2 = new Observer();subject.addObserver(observer1);
subject.addObserver(observer2);subject.notify('Hello, observers!');

4. 策略模式

策略模式定义一系列算法,并将其封装成策略类,使它们可以互相替换。在 JavaScript 中,可以使用对象字面量来实现策略模式。

const discountStrategies = {normal: amount => amount,vip: amount => amount * 0.8,premium: amount => amount * 0.7
};function calculateDiscount(strategy, amount) {return discountStrategies[strategy](amount);
}const normalPrice = 100;
const vipPrice = calculateDiscount('vip', normalPrice);

5. 装饰者模式

装饰者模式动态地将责任附加到对象上,以扩展其功能。在 JavaScript 中,可以通过继承或组合来实现装饰者模式。

class Coffee {cost() {return 10;}
}class MilkDecorator {constructor(coffee) {this.coffee = coffee;}cost() {return this.coffee.cost() + 5;}
}class SugarDecorator {constructor(coffee) {this.coffee = coffee;}cost() {return this.coffee.cost() + 2;}
}let coffee = new Coffee();
coffee = new MilkDecorator(coffee);
coffee = new SugarDecorator(coffee);console.log(coffee.cost()); // 输出:17

设计模式是开发者们多年实践的经验总结,它们可以帮助我们解决复杂的问题并提高代码的可维护性。单例模式、工厂模式、观察者模式、策略模式、装饰者模式等都是常见且实用的设计模式。通过理解这些模式的实现和应用,你将能够更好地构建优雅、可扩展的应用程序,提升你的编程艺术水平。无论你是初学者还是有经验的开发者,掌握设计模式,都将让你在编程的世界中更加游刃有余,创造出更加出色的作品!

http://www.lryc.cn/news/122415.html

相关文章:

  • 32bit国产低功耗无线MCU芯片
  • scope组件穿透
  • 分类预测 | Python实现LR逻辑回归多输入分类预测
  • 【微信小程序】通过使用 wx.navigateTo方法进行页面跳转,跳转后的页面中通过一些方式回传值给原页面
  • DIP: Spectral Bias of DIP 频谱偏置解释DIP
  • 【考研数学】概率论与梳理统计 | 第一章——随机事件与概率(1)
  • LeetCode 36题:有效的数独
  • word横向页面侧面页码设置及转pdf后横线变竖线的解决方案
  • 华为OD机试 - 字符串划分(Java JS Python)
  • 使用 `nmcli` 在 CentOS 8 上添加永久路由
  • Java基础五之for循环小练习
  • 解决 Python RabbitMQ/Pika 报错:pop from an empty deque
  • 观察者模式实战
  • 035_小驰私房菜_Qualcomm账号注册以及提case流程
  • uniapp input输入框placeholder文本右对齐
  • 分布式监控平台—zabbix
  • 【leetcode】第一章数组-2
  • 程序使用Microsoft.XMLHTTP对象请求https时出错解决
  • Linux安装配置nginx+php搭建
  • springboot的各种配置
  • OSI七层模型及TCP/IP四层模型
  • MDN-Web APIs
  • 2023国赛数学建模C题思路分析
  • 暑假集训笔记
  • 【枚举+推式子】牛客小白月赛 63 E
  • Android多屏幕支持-Android12
  • python环境下载安装教程,python运行环境怎么下载
  • 【0.2】lubancat鲁班猫4远程ubuntu22.04.2 无需任何安装
  • Flutter 状态管理 Provider
  • 【设计模式】观察者模式