一、建造者模式介绍
1.1 建造者模式的定义
建造者(Builder)模式指将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。它是把对象的构建和表述分离。
也就是通过多个简单对象组装出一个复杂对象的过程,比如机器人需要多步简单的组装、装修需要各个子步骤的合并完成:
更多资料获取:评论区留言或是私信获取到哦,资料都是免费分享给大家
1.2 建造者模式的特点
-
优点
-
建造者模式将零件细节进行了封装,实现了构建和表示分离
-
建造者可以对创建过程逐步细化,而不对其它模块产生影响,能方便控制细节风险
-
-
缺点:
- 如果产品内部变化,建造者也有整体进行修改,后期维护成本较大
二、建造者模式结构与实现
2.1 建造者模式的结构
建造者模式主要由产品(Product)、抽象建造者(Builder)、具体建造者(Concrete Builder)和指挥者(Director)四个角色构成,如下面的类图所示:
Product
:包含多个组件的产品,需要由具体建造者进行创建AbstractBuilder
:创建具体建造者的接口,通常还包括一个返回产品的接口Concrete Builder
:继承/实现抽象建造者,完成产品的各个部分的具体创建方法Director
:负责调用建造者以及内部具体产品对象的构建,在这之中不涉及具体的产品信息
2.2 建造者模式的实现
根据上面的类图我们可以写出如下代码:
//产品角色
public class Product {
public void setPartA(){}
public void setPartB(){}
public void setPartC(){}
public void show(){
System.out.println("完成产品构建一次");
}
}
//抽象建造者
public abstract class AbstractBuilder {
protected Product product = new Product();
public abstract void buildPartA();
public abstract void buildPartB();
public abstract void buildPartC();
public Product getResult() {
return product;
}
}
//具体建造者
public class Builder1 extends AbstractBuilder{
@Override
public void buildPartA() {
product.setPartA();
}
@Override
public void buildPartB() {
product.setPartB();
}