设计模式-建造者模式

建造者模式UML类图:

Product :代表要构建的复杂对象,包含一个parts列表来存储构建的部件,并有add和show方法来添加部件和展示产品

Builder:是抽象建造者角色,定义了构建产品的方法,并返回自身以支持链式调用

ConcreteBuilder:是具体建造者角色,实现了Builder中定义的方法,构建产品的具体部分

Director:是指挥者角色,负责安排构建过程,并使用Builder来构建产品

ConcreteBuilder:继承自Builder。Director:使用Builder来构建产品

一、产品角色(Product)

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class Product {
    private List<String> parts;

    public Product() {
        this.parts = new ArrayList<>();
    }

    public void add(String part) {
        parts.add(part);
    }

    public void show() {
        System.out.println("------------");
        for (String part : parts) {
            System.out.println(part);
        }
        System.out.println("------------");
    }
}

二、抽象建造者角色(Builder)

java 复制代码
public abstract class Builder {
    protected Product product = new Product();

    public abstract Builder buildPartA();

    public abstract Builder buildPartB();

    public Product build() {
        return product;
    }
}

三、具体建造者角色(ConcreteBuilder)

java 复制代码
public class ConcreteBuilder extends Builder {
    @Override
    public Builder buildPartA() {
        product.add("PartA");
        return this;
    }

    @Override
    public Builder buildPartB() {
        product.add("PartB");
        return this;
    }
}

四、指挥者角色(Director)

java 复制代码
public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public void construct() {
        builder.buildPartA().buildPartB();
    }

    public Product getProduct() {
        return builder.build();
    }
}

五、测试

java 复制代码
public class Client {
    public static void main(String[] args) {
        Director director = new Director(new ConcreteBuilder());
        director.construct();
        Product product = director.getProduct();
        product.show();
    }
}
相关推荐
MobotStone5 小时前
AI 写代码越来越爽,但程序员可能越来越废了
人工智能·设计模式
墨子夕6 小时前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(前言篇)
java·开发语言·设计模式
墨子夕9 小时前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(第一篇)
java·python·设计模式
General_G10 小时前
创建型模式—原型(Prototype)模式
c++·设计模式·原型模式
geovindu13 小时前
rust: Template Method Pattern
开发语言·后端·设计模式·rust·行为模式·模板方法模
geovindu14 小时前
rust: Template Method Pattern(续)
开发语言·后端·设计模式·rust·行为模式·板方法模式
博风15 小时前
17、设计模式应用举例:单件模式:多线程争冠军
设计模式
高晶1 天前
无乘法器实现LC二阶滤波器:基于移位运算的快速算法与四种精度推导
算法·设计模式·程序员
高晶1 天前
主从自动分配算法:平均值乘以设备数一半的选举基准值解析
算法·设计模式·程序员
延晗1 天前
【从零开始 DeepSeek Harness 插件开发教程】二、一切皆插件:简单理解一下 Cordis 内核与 DSH 心智模型
设计模式·deepseek