3. 创建型模式--建造者模式

一. 建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,用于创建复杂对象。它将一个对象的构建过程和表示分离,使得同样的构建过程可以创建不同的表示。

适用场景

  • 创建对象的构造过程比较复杂,包含多个可选参数或具有多个步骤。
  • 希望创建不同配置的对象,但避免使用过多的构造函数或参数。
  • 需要保证对象在构造过程中是不可变的,即一旦构建完成,就不能再修改。
  • 希望提供一种清晰的方式来构建对象,并且可以按顺序设置属性。
  • 通过拆分对象的构建过程,可以将共同的构建逻辑抽象出来,提高代码的重用性

二. 实现

1.创建一个Computer类,字段多且可选

public class Computer {
    private String cpu; // 必须
    private String memory; // 必须
    private String hardDisk; // 必须
    private String individualGraphicsCard; // 可选
    private String individualScreen;

    private Computer(Builder builder) {
        this.cpu = builder.cpu;
        this.memory = builder.memory;
        this.hardDisk = builder.hardDisk;
        this.individualGraphicsCard = builder.individualGraphicsCard;
        this.individualScreen = builder.individualScreen;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "cpu='" + cpu + '\'' +
                ", memory='" + memory + '\'' +
                ", hardDisk='" + hardDisk + '\'' +
                ", individualGraphicsCard='" + individualGraphicsCard + '\'' +
                ", individualScreen='" + individualScreen + '\'' +
                '}';
    }

    public static class Builder {
        private String cpu; // 必须
        private String memory; // 必须
        private String hardDisk; // 必须
        private String individualGraphicsCard = "INVIDA"; // 可选
        private String individualScreen = "LENOVO";

        public Builder(String cpu, String memory, String hardDisk) {
            this.cpu = cpu;
            this.memory = memory;
            this.hardDisk = hardDisk;
        }

        public Builder individualGraphicsCard(String individualGraphicsCard) {
            this.individualGraphicsCard = individualGraphicsCard;
            return this;
        }

        public Builder individualScreen(String individualScreen) {
            this.individualScreen = individualScreen;
            return this;
        }

        public Computer builder() {
            return new Computer(this);
        }
    }
}

2.测试

public class Main {
    public static void main(String[] args) {
        Computer computer = new Computer.Builder("INTEL", "M1", "H1")
                .individualGraphicsCard("G1")
                .individualScreen("S1")
                .builder();

        System.out.println(computer);
    }
}

运行结果:

Computer{cpu='INTEL', memory='M1', hardDisk='H1', individualGraphicsCard='G1', individualScreen='S1'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值