javascript 设计模式的综合整理

笔记2024-04-162 人已阅来源:网络

在JavaScript中,设计模式是用于解决特定原则和模式的编程问题的套路。

下面是几个常见的设计模式:

1. 工厂模式
2. 单例模式
3. 观察者模式
4. 策略模式

工厂模式

工厂模式是用来创建对象的一种方法,它把对象的创建过程封装起来,使得创建过程可以独立于客户端。

function createPerson(name, age) {
let obj = {}
obj.name = name
obj.age = age
return obj
}
let person1 = createPerson('Tom', 25)

单例模式

单例模式是一种只创建一个对象的方法。通过该方法,我们可以确保只有一个对象被创建,并且可以被全局范围内的对象所共享。

let Singleton = (function() {
let _instance
function createInstance() {
let obj = {}
// ...
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 Subject() {
this.observers = []
}
Subject.prototype = {
subscribe: function(observer) {
this.observers.push(observer)
},
unsubscribe: function(observer) {
const index = this.observers.indexOf(observer)
if (index !== -1) {
this.observers.splice(index, 1)
}
},
notify: function() {
this.observers.forEach(observer => observer.update())
}
}
function Observer() {
this.update = function() {
// ...
}
}
let subject = new Subject()
let observer1 = new Observer()
let observer2 = new Observer()
subject.subscribe(observer1)
subject.subscribe(observer2)
subject.notify()

策略模式

策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同。

const strategy = {
'add': function(a, b) {
return a + b
},
'subtract': function(a, b) {
return a - b
}
}
function calculate(strategyName, a, b) {
return strategy[strategyName](a, b)
}
console.log(calculate('add', 1, 2)) // 3
console.log(calculate('subtract', 1, 2)) // -1

以上是四种常见的设计模式,它们分别用来解决对象创建、全局单例、通知机制和算法选择的问题。