结合 ES6 类编写JavaScript 创建型模式的步骤:
- 定义一个类,这个类代表要创建的对象类型。
- 在类中定义一个静态方法,这个静态方法将使用类的构造函数来创建一个对象。
- 定义一个方法,用于对类的实例进行初始化。这个方法通常是一个构造函数或者一个工厂方法。
- 对类进行扩展,以便可以创建新的对象类型。
- 实例化新的对象。
下面简单介绍两种在 ES6 中创建 JavaScript 创建型模式的示例:
1. 工厂模式
工厂模式是创建型设计模式的一种,它提供了一种抽象工厂的方法来创建对象的实例。本示例中实现了一个汽车工厂,可以生产不同的汽车。
class CarFactory {
static createCar(type) {
switch (type) {
case 'suv':
return new SUV();
case 'sedan':
return new Sedan();
case 'sport':
return new Sport();
default:
throw new Error('Invalid car type.');
}
}
}
class Car {
constructor(options) {
this.model = options.model;
this.year = options.year;
}
}
class SUV extends Car {
constructor(options) {
super(options);
this.type = 'SUV';
}
}
class Sedan extends Car {
constructor(options) {
super(options);
this.type = 'Sedan';
}
}
class Sport extends Car {
constructor(options) {
super(options);
this.type = 'Sport';
}
}
const mySUV = CarFactory.createCar('suv');
const mySedan = CarFactory.createCar('sedan');
const mySport = CarFactory.createCar('sport');
2. 单例模式
单例模式是保证一个类只有一个实例的创建型模式。本示例中实现了一个日志记录器,可以记录系统中所有的信息。
class Logger {
constructor() {
if (!Logger.instance) {
this.logs = [];
Logger.instance = this;
}
return Logger.instance;
}
log(message) {
this.logs.push(message);
console.log(`[Logger]: ${message}`);
}
printLogs() {
console.log('Logs:');
this.logs.forEach(log => console.log(log));
}
}
const logger = new Logger();
logger.log('xxx happened.');
const logger2 = new Logger();
logger2.log('yyy happened.');
logger.printLogs();
以上就是结合 ES6 类编写JavaScript 创建型模式的完整攻略和两个示例的说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:结合 ES6 类编写JavaScript 创建型模式 - Python技术站