1. 工厂模式
一个构造函数就是一个工厂,生成不同的对象
// 构造函数类,生成要创建的对象
class Product {
constructor (name) {
this.name = name;
}
init () {}
}
// 工厂对象
class Creator {
create (name) {
return new Product(name);
}
}
const creator = new Creator();
const p1 = creator.create('zs'); // 通过工厂方法创建出具体对象
const p1 = creator.create('ls');
2. 单例模式
只允许实例化一次,能提高对象访问速度并且节约内存
// 类的静态方法访问
Single.getInstance = (function () {
let instance;
return function () {
if (!instance) {
instance = new Single();
}
return instance;
}
})()
const obj1 = Single.getInstance(); // 首次创建一次,后面直接取
const obj2 = Single.getInstance();
console.log(obj1 === obj2); // true
3.适配器模式
解决两个已有接口之间不匹配的问题,可以进行参数转换
// 不兼容的对象
class Adapter {
specificRequest () { // 参数
return '德国标准插头';
}
}
// 适配器对象
class Target {
constructor () {
this.adapter = new Adapter(); // 获取不兼容对象
}
// 对不兼容对象进行包装处理
request () {
const info = this.adapter.specificRequest();
console.log(`${info} - 转换器 - 中国标准插头`) // 不兼容参数转换
}
}
const target = new Target();
console.log(target.request()); // 德国标准插头 - 转换器 - 中国标准插头