手机网站模板在线建站,安装微信,怎么做下载类的网站,购物网站建站规划概念
生成器模式#xff08;Builder Pattern#xff09;是一种创建型设计模式#xff0c;用于构建复杂对象。它允许您逐步构造一个对象#xff0c;将构建过程与最终对象的表示分离开来。这种模式通常用于创建复杂的对象#xff0c;这些对象可能有多个部分组成#xff0c…概念
生成器模式Builder Pattern是一种创建型设计模式用于构建复杂对象。它允许您逐步构造一个对象将构建过程与最终对象的表示分离开来。这种模式通常用于创建复杂的对象这些对象可能有多个部分组成且构建过程可能涉及多个步骤或配置选项。
具体内容
生成器模式的主要目的是将对象的构建步骤解耦使得您可以灵活地创建不同表示的对象同时保持构建过程的清晰性和可维护性。它通常包含以下几个关键角色
产品Product 要创建的复杂对象该对象通常由多个部分组成。在生成器模式中可以有多种表示形式的产品。生成器Builder 定义了创建产品的接口和步骤以及设置产品各个部分的方法。生成器抽象类或接口可能包含多个构建方法每个方法负责构建产品的一个特定部分。具体生成器Concrete Builder 实现生成器接口负责实际构建产品的步骤和逻辑。具体生成器将产品的构建细节封装在内部并实现了生成器中定义的构建方法。导演Director 可选角色负责指导具体生成器构建产品的步骤顺序。导演可以知道构建过程的顺序然后委托具体生成器执行构建步骤以创建最终的产品。
类结构图 适用场景
作为一种创建型的设计模式以下情况你可以考虑使用它
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。当构造过程必须允许被构造的对象有不同的表示时。
实现
// 1. 产品Product
class Product {constructor() {this.parts [];}addPart(part) {this.parts.push(part);}show() {console.log(Product Parts: , this.parts.join(, ));}
}// 2. 生成器接口Builder
class Builder {constructor() {this.product new Product();}buildPartA() {}buildPartB() {}buildPartC() {}getResult() {return this.product;}
}// 3. 具体生成器Concrete Builder
class ConcreteBuilder extends Builder {buildPartA() {this.product.addPart(PartA);}buildPartB() {this.product.addPart(PartB);}buildPartC() {this.product.addPart(PartC);}
}// 4. 导演Director
class Director {constructor(builder) {this.builder builder;}construct() {this.builder.buildPartA();this.builder.buildPartB();this.builder.buildPartC();}
}// 客户端代码
const concreteBuilder new ConcreteBuilder();
const director new Director(concreteBuilder);
const product concreteBuilder.getResult();
product.show(); // Product Parts: PartA, PartB, PartC