建造者模式

曾梦垚 曾梦垚     2022-08-20     392

关键词:

建造者模式的定义

建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:

Separate the construction of a complex object from its representation so that the same

construction process can create different representations.(将一个复杂对象的构建与它的表示分

离,使得同样的构建过程可以创建不同的表示。)

 

● Product产品类

 

通常是实现了模板方法模式,也就是有模板方法和基本方法

 

● Builder抽象建造者

 

规范产品的组建,一般是由子类实现。

 

ConcreteBuilder具体建造者

 

实现抽象类定义的所有方法,并且返回一个组建好的对象。

 

● Director导演类

 

负责安排已有模块的顺序,然后告诉Builder开始建造

 

建造者模式的通用源代码也比较简单,先看Product类,通常它是一个组合或继承(如模

 

板方法模式)产生的类

 

产品类

 

public class Product {

 

     public void doSomething(){

 

             //独立业务处理

 

     }

 

}

抽象建造者

public abstract class Builder {    

     //设置产品的不同部分,以获得不同的产品

     public abstract void setPart();

     //建造产品

     public abstract Product buildProduct();

}

其中,setPart方法是零件的配置,什么是零件?其他的对象,获得一个不同零件,或者

不同的装配顺序就可能产生不同的产品。

 

具体建造者

 

public class ConcreteProduct extends Builder {

 

     private Product product = new Product();

 

     //设置产品零件

 public void setPart(){

             /*

              * 产品类内的逻辑处理

              */

     }  

     //组建一个产品

     public Product buildProduct() {

             return product;

     }

}

需要注意的是,如果有多个产品类就有几个具体的建造者,而且这多个产品类具有相同

接口或抽象类

 

导演类

 

public class Director {

 

     private Builder builder = new ConcreteProduct();

 

     //构建不同的产品

 

     public Product getAProduct(){

 

             builder.setPart();

 

             /*

 

              * 设置不同的零件,产生不同的产品

 

              */

 

             return builder.buildProduct();

 

     }

 

}

 

导演类起到封装的作用,避免高层模块深入到建造者内部的实现类。当然,在建造者模

 

式比较庞大时,导演类可以有多个。

 

建造者模式的优点

 

● 封装性

 

使用建造者模式可以使客户端不必知道产品内部组成的细节

 

● 建造者独立,容易扩展

 

BenzBuilder和BMWBuilder是相互独立的,对系统的扩展非常有利。

 

● 便于控制细节风险

 

由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任

 

何影响。

 

建造者模式的使用场景

 

● 相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。

 

● 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可

 

以使用该模式。

 

● 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建

 

造者模式非常合适。

 

● 在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程

 

中不易得到时,也可以采用建造者模式封装该对象的创建过程。该种场景只能是一个补偿方

 

法,因为一个对象不容易获得,而在设计阶段竟然没有发觉,而要通过创建者模式柔化创建

 

过程,本身已经违反设计的最初目标。

 

建造者模式的注意事项

 

建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式最大不同的

 

地方,虽然同为创建类模式,但是注重点不同。

提示:

建造者模式最主要的功能是基本方法的

 

调用顺序安排,也就是这些基本方法已经实现了,通俗地说就是零件的装配,顺序不同产生

 

的对象也不同;而工厂方法则重点是创建,创建零件是它的主要职责,组装顺序则不是它关

 

心的。

 

建造者模式(builder)

建造者模式(Builder)C#设计模式系列:建造者模式(Builder)建造者模式(BuilderPattern) 状态模式C#设计模式——状态模式(StatePattern) 查看详情

设计模式建造者模式(简介|适用场景|优缺点|代码示例)(代码片段)

文章目录一、建造者模式简介二、建造者模式适用场景三、建造者模式优缺点四、建造者模式与工厂模式五、建造者模式代码示例1、学生类2、建造者抽象类3、建造者实现类4、教师类(非必须)5、测试类六、实例类和建造者类定... 查看详情

设计模式——建造者模式

设计模式(五)——建造者模式一、建造者模式简介1、建造者模式简介    建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。    建造者模式和抽象工厂模式... 查看详情

设计模式之————建造者模式

建造者模式1.什么是建造者模式?建造者模式属于创造型模式,它是将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。举例:普通房子和高楼,两者都很难建造,但也有相似点:打地... 查看详情

设计模式之建造者模式(创建型)(代码片段)

模式定义建造者模式属于23种设计模式中的创建型模式,可以理解为创建对象的一种很好的方法。所谓建造者模式就是将组件和组件的组件过程分开,然后一步一步建造一个复杂的对象。所以建造者模式又叫生成器模式。建造者... 查看详情

设计模式—建造者模式(builder)(代码片段)

title:设计模式—建造者模式建造者模式(Builder)是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。我们获得一... 查看详情

java设计模式-建造者模式

建造者模式概述建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如... 查看详情

设计模式之建造者模式

1定义建造者模式(BuilderPatten):将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式用于一步一步创建一个复杂的对象,他允许用户只通过指定复杂对象的类型和内容进行构建,用户... 查看详情

大话设计模式-建造者模式(代码片段)

建造者模式建造者模式又称生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象,这些对象内部构构建间的构造顺序通常是稳定的,但对象内... 查看详情

设计模式建造者模式

建造者模式建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在建造事物时,如果发现事物的内部建造的顺序是保持不变的,并且多个事物之间的建造过程也是一致的那么就可以使... 查看详情

设计模式:学习笔记——建造者模式

设计模式:学习笔记(4)——建造者模式概述建造者模式  建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只... 查看详情

建造者模式

建造者模式的定义建造者模式(BuilderPattern)也叫做生成器模式,其定义如下:Separatetheconstructionofacomplexobjectfromitsrepresentationsothatthesameconstructionprocesscancreatedifferentrepresentations.(将一个复杂对象的构建与它的表示分离,使得同样... 查看详情

建造者模式

设计模式之建造者设计模式(也叫生成器模式)建造者模式就是将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示1:使用建造者模式的话,它封装了一个产品的构造过程,并且允许按照预定的步骤构... 查看详情

建造者模式

...的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式与抽象工厂模式相似,也用来创建复杂对象。主要区别是建造者模式着重一步步构造一个复杂对象,而抽象工厂模式着重于多个系列的产品对象。二、角色抽象... 查看详情

建造者模式

建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。如果我们用了建造者模式,那么用户就只需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知... 查看详情

建造者模式

建造者模式将一个复杂对象的构建与其表示分离。将复杂对象进行框架化,将同类的对象编造进同一个制造流程。同类·对象会有一样的框架。而由于各部分的实现细节有所不同,所生产出来的产品会有所不同。从而有不同的·... 查看详情

java设计模式3.建造者模式原型模式

建造者模式一个产品常有不同的组成部分作为产品的零件,有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用,有些时候,一个对象的一些性质必须按照某个顺序赋值才有... 查看详情

设计模式—建造者模式

1建造者模式  将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。  建造者返回给客户一个完整的产品对象,而客户端无须关心该对象所包含的属性和组建方式,这就是建造者模式的设... 查看详情