Java设计模式之 建造者模型,简单易于理解

建造者模型

一、概念:

建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
实用范围:
1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2 当构造过程必须允许被构造的对象有不同表示时。
折叠角色

在这样的设计模式中,有以下几个角色:

Java设计模式之 建造者模型,简单易于理解_第1张图片
1 builder:为创建一个产品对象的各个部件指定抽象接口。

2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。

3 Director:构造一个使用Builder接口的对象。

4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

二、代码解析

1、以建造房子为例,首先建筑一个房子对象,里面有三个属性
Java设计模式之 建造者模型,简单易于理解_第2张图片
2、建造一个房子建筑者接口,里面包括建房子要建的三种属性的方法。
Java设计模式之 建造者模型,简单易于理解_第3张图片
3、创建一个类去实现建造者接口
Java设计模式之 建造者模型,简单易于理解_第4张图片
Java设计模式之 建造者模型,简单易于理解_第5张图片
4、引进一个设计者,简化客户端的调用,这个设计者负责设计建造房子的操作过程和业务处理。
Java设计模式之 建造者模型,简单易于理解_第6张图片
Java设计模式之 建造者模型,简单易于理解_第7张图片
Java设计模式之 建造者模型,简单易于理解_第8张图片
5、现在创建一个客户端,实现建造房子的过程,先定义一个方法的建造者,再定义一个设计者,直接调用实现建房子的过程。
Java设计模式之 建造者模型,简单易于理解_第9张图片

三、建造者模式的优缺点

建造者模式的优点:
1、客户端不必知道产品内部的组成细节,将产品本身与产品的建造过程解耦,使得相同的建造过程可以建造不同的产品对象。
2、每个具体建筑者对象都是独立的,与其他的具体建造者无关,因此很方便地替换具体建筑者或者增加新的具体建造者。
3、可以更加精细地控制产品的建造过程。将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰,也更加方便使用程序来控制创建过程。
4、增加新的具体者无需修改原有类库的代码,系统扩展方便,符合开闭原则。
建造者模式的缺点:
1、产品之间差异性很大的情况:建造者横式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
2、产品内部变化很复杂的情况:如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很底大。

你可能感兴趣的:(Java设计模式)