Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
Builder模式是一种对象创建型模式,它跟工厂模式(包括工厂方法模式与虚拟工厂模式)一样,都用来创建类的对象。我们先阐述一下Builder模式的定义:
Builder模式用来创建复合对象,并把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象;另一方面,为了统一创建过程,又把对象创建的操作统一封装在名为Director所提供的方法里。
复合对象的概念:
所谓复合对象,指有别于一般的对象,该对象具有不同的复合属性。比如我们把一辆汽车看成一个复合对象,是因为该汽车由多个复杂的零部件组成,这些零部件可能 因为生产厂家的不同等等而不同,但这些不同的零部件最终都能被组装为一辆汽车。这些不同的零部件我们可称之为汽车的复合属性,同样可称该汽车为一个复合对象。
public interface CarBuilder {
public void makeHead();
public void makeLight();
public void makeWheel();
}
public class MiniCarBuilder implements CarBuilder {
@Override
public void makeHead() {
System.out.println("制造车头");
}
@Override
public void makeLight() {
Ligth light=new Light();
System.out.println("制造车灯");
}
@Override
public void makeWheel() {
System.out.println("制造车尾");
}
}
public class Lighe{}
建造者:
public class CarDirector {
CarBuilder builder;
public CarDirector(CarBuilder builder) {
this.builder = builder;
}
void builder() {
builder.makeHead();
builder.makeLight();
builder.makeWheel();
}
}
测试类:
public class Test {
public static void main(String[] args) {
new CarDirector(new MiniCarBuilder()).builder();
}
}
Builder模式与工厂模式的区别与Builder模式的应用场景我们上面提到了,Builder模式和工厂模式一样,都属于对象创建型模式,都用来创建类的对象。但它们存在在本质的区别:
- 在工厂模式里,我们无需关心产品的各部分是如何被创建的;但在Builder模式里,会把产品的创建过程抽象为多个部分。也就是说,工厂模式被关注的是整个产品,而Builder模式被关注的是产品的组成部分的创建过程。
- 因为上述关注点的不一样,工厂模式被创建的产品是一个单一产品;Builder模式创建的是一个复合产品。
简单一点说,在具体的应用中,我们是选用工厂模式来创建对象呢还是选用Builder模式来创建对象,完全取决于我们的关注点。
比如同为创建一辆汽车,如果我们只需关注只是从工厂里造出的这一辆汽车本身(然后加以使用),我们就可以使用工厂模式来创建该汽车;但如果我们还应该关注该汽车的各部分是怎么造出来的(或者说,不同的工厂对产品的各部分的造法不一样),我们就应该使用Builder模式。
Builder模式的应用场景
- 对象的创建:Builder模式是为对象的创建而设计的模式
- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象
- 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法
分享到:
相关推荐
java实现建造者模式(Builder Pattern) java实现建造者模式(Builder Pattern)是一种软件设计模式,旨在解决软件系统中创建复杂对象的问题。建造者模式可以将复杂对象的创建过程分解为多个简单的对象一步一步构建...
建造者模式 建造者模式(Builder Pattern)是一种创造型设计模式,用于将一个复杂对象的构造与其表示分离,使同样的构建过程可以创建不同的表示。该模式通过将一个复杂对象分解为多个简单的对象,逐步完成复杂对象...
建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在C++中实现建造者模式,我们可以遵循以下步骤: 首先,我们需要定义一个抽象建造者(Builder)类,它声明了一...
建造者模式是一种创建型设计模式,用于将复杂对象的构建与其表示分离,使得相同的构建过程可以创建不同的表示。在Java中,StringBuilder类是建造者模式的一个典型应用。 StringBuilder类用于创建和操作动态字符串。...
深入分析JAVA 建造者模式 JAVA 建造者模式是一种创建型模式,提供了一种创建对象的最佳方式。该模式使用多个简单的对象一步一步构建成一个复杂的对象。 Builder 类会一步一步构造最终的对象,而该 Builder 类是...
在软件设计领域,建造者模式(Builder Pattern)是一种创建型设计模式,用来创建复杂的对象。该模式涉及到将一个复杂对象的构建与它的表示分离,同样的构建过程可以创建不同的表示。建造者模式通常用于那些产品对象...
建造者模式将一个对象的构建过程和其表示分离,允许通过相同的构建过程创建不同的表示。在建造者模式中,指导者负责组装建造者提供的各个部分,而具体的建造者则负责实际构建和装配
建造者模式是一种设计模式,它的主要目标是解决创建复杂对象时面临的参数过多、构造过程复杂以及需要进行参数校验等问题。在Java等不支持默认参数和具名参数的编程语言中,这种模式显得尤为重要。 首先,建造者模式...
建造者模式是一种设计模式,它的主要目的是将构造过程与对象的表示分离,使得同样的构建过程可以创建不同的表示。在.NET框架中,这种模式可以应用于多种场景,如ASP.NET开发,帮助开发者更灵活地构建复杂的对象。 ...
建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...
建造者模式是一种创建型设计模式,用于简化复杂对象的创建过程。以下是建造者模式的关键概念和步骤: 1. **分离复杂对象的构建和表示**:建造者模式将一个复杂对象的构建过程与其最终的表示形式分离开来。这样做的...
建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在Java中,这种模式通常用于构建对象时,尤其是当对象的构造过程复杂,需要多步骤或者允许用户自定义构建过程时...
建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,通过将构造过程与对象本身分离,使得同样的构造过程可以创建不同的表示。这种模式常用于当创建对象的步骤复杂或者...
### 建造者模式详解 #### 模式介绍 建造者模式(Builder Pattern)是设计模式中的一种,主要用于创建复杂对象。此模式的核心在于将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。简单...
"Java设计模式之建造者模式实例详解" 本文主要介绍了Java设计模式之建造者模式,结合具体实例形式分析了建造者模式的概念、原理、实现方法与相关使用注意事项。 建造者模式的概念 建造者模式(Builder Pattern)...
建造者模式是一种软件设计模式,它允许我们分步骤地创建复杂的对象,同时将对象的构建过程和其表示相分离。这种模式在JavaScript中同样适用,能够帮助我们更好地组织代码,提高代码的可读性和可维护性。以下是关于...
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤地创建一个复杂对象。这个模式通过将构建过程和表示过程分离,使得同样的构建过程可以创建不同的表示。 压缩包文档是一个简单的Python示例,展示...