Java23种设计模式-创建型模式之建造者模式

建造者模式(Builder Pattern),也被称为生成器模式,是一种创建型设计模式,主要用于解决复杂对象的构建问题。建造者模式的主要特点是:
1.分离构建与表示:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
2.封装性:通过将对象的构建过程封装在一个独立的建造者类中,提高了代码的封装性。
3.扩展性:不同的具体建造者可以实现不同的构建步骤,从而创建不同的产品变体,提高了系统的扩展性。
4.控制细节风险:客户端不必知道产品内部组成的细节,便于控制细节风险。

建造者模式的主要构成要素包括:
1.抽象建造者(Builder):定义构建产品步骤和方法,但没有具体的实现。
2.具体建造者(Concrete Builder):实现了抽象建造者定义的方法,完成产品的构建过程,每个具体建造者负责构建特定的产品变体。
3.指挥者(Director):负责控制建造过程,它通过将客户端具体建造者分离确保产品的构建是按照一定顺序和规则进行的。
4.产品(Product):表示正在构建的复杂对象,建造者模式的目标是构建这个产品。

示例:定义了一个Computer产品类,一个Builder接口,以及一个具体的LaptopBuilder类实现Builder接口。Director类负责安排构建过程。客户端代码中,我们创建了Director、Builder和Computer的实例,并通过Director来构建一台电脑。最后打印出了电脑的配置信息。

java 复制代码
// 产品类
public class Computer {
    private String cpu;
    private String sam;
    private String screen;

    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

    public void setSam(String sam) {
        this.sam = sam;
    }

    public void setScreen(String screen) {
        this.screen = screen;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "cpu='" + cpu + '\'' +
                ", sam='" + sam + '\'' +
                ", screen='" + screen + '\'' +
                '}';
    }
}
// 建造者接口
public interface Builder {
    void buildCpu();
    void buildRam();
    void buildScreen();

    Computer getComputer();

}
// 具体建造者
public class LaptopBuilder implements Builder {
    private Computer computer=new Computer();

    @Override
    public void buildCpu() {
        computer.setCpu("i7处理器");
    }

    @Override
    public void buildRam() {
        computer.setSam("16GB内存");
    }

    @Override
    public void buildScreen() {
        computer.setScreen("32寸屏幕");
    }

    @Override
    public Computer getComputer() {
        return computer;
    }
}
//指挥者
public class Director {
    public void construct(Builder builder){
        builder.buildCpu();
        builder.buildRam();
        builder.buildScreen();
    }
}


//测试
public class BuilderPatternExample {
    public static void main(String[] args) {
        //指挥者
        Director director = new Director();
        //建造者
        Builder builder = new LaptopBuilder();
        //指挥
        director.construct(builder);
        //建造
        Computer computer = builder.getComputer();

        System.out.println(computer);

    }
}
相关推荐
程序员JerrySUN5 小时前
设计模式每日硬核训练 Day 14:组合模式(Composite Pattern)完整讲解与实战应用
设计模式·组合模式
碎梦归途5 小时前
23种设计模式-创建型模式之工厂方法模式(Java版本)
java·设计模式·工厂方法模式
XU磊2605 小时前
Java 工厂设计模式详解:用统一入口打造灵活可扩展的登录系统----掌握 Spring 源码的基础第一步
java·设计模式
匹马夕阳6 小时前
java开发中的设计模式之工厂模式
java·设计模式
Pasregret6 小时前
设计模式入门:从 GoF 分类到 SOLID 原则实战
java·设计模式
Light609 小时前
Python依赖注入完全指南:高效解耦、技术深析与实践落地
python·设计模式·单元测试·fastapi·依赖注入·解耦
都叫我大帅哥9 小时前
代码界的「俄罗斯套娃」:组合模式的嵌套艺术
java·后端·设计模式
渊渟岳12 小时前
为了掌握设计模式,开发了一款Markdown 文本编辑器软件(已开源)
java·设计模式
邪恶的贝利亚16 小时前
设计模式实践:模板方法、观察者与策略模式详解
设计模式·策略模式
匹马夕阳21 小时前
Java开发中的设计模式之观察者模式详细讲解
java·观察者模式·设计模式