使用js封装最常用的几种设计模式 给出代码示例
时间: 2023-01-30 22:23:35 浏览: 72
好的,使用 JavaScript 封装最常用的几种设计模式包括:
1. 单例模式: 这种模式的目的是保证一个类只有一个实例,并提供一个全局访问点来访问这个实例。
示例代码:
```
const Singleton = (function () {
let instance;
function createInstance() {
const object = new Object({name: 'Singleton'});
return object;
}
return {
getInstance: function () {
if (!instance) {
instance = createInstance();
}
return instance;
}
};
})();
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // true
```
2. 工厂模式: 这种模式主要是用来创建对象的,而不是直接使用 new 操作符。
示例代码:
```
function factory(type, content) {
if (type === 'alert') {
return new Alert(content);
} else if (type === 'prompt') {
return new Prompt(content);
} else if (type === 'confirm') {
return new Confirm(content);
}
}
const alert = factory('alert', 'This is an alert');
const prompt = factory('prompt', 'This is a prompt');
const confirm = factory('confirm', 'This is a confirm');
```
3. 装饰器模式: 这种模式允许给一个现有的对象动态地添加一些额外的职责。
示例代码:
```
function Decorator(component) {
this.component = component;
}
Decorator.prototype.operation = function () {
console.log('Start operation');
this.component.operation();
console.log('End operation');
}
function ConcreteDecoratorA(component) {
Decorator.call(this, component);
}
ConcreteDecoratorA.prototype = Object.create(Decorator.prototype);
ConcreteDecoratorA.prototype.operation = function () {
Decorator.prototype.operation.call(this);
console.log('Extra operation by ConcreteDecoratorA');
}
function ConcreteDecoratorB(component) {
Decorator.call(