# 建造者模式

文章介绍了建造者模式的概念,用于将复杂对象的构建和表示分离。当类的构造函数参数过多且有可选参数时,可以使用建造者模式。文中提供了一个Java代码示例,展示了如何通过静态内部类和链式方法实现建造者模式,简化了对象创建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建造者模式的定义

将一个复杂对象的构建和它所要的表示分离开来,这样的话,就可以使得同样的构建过程就可以创
建不同的表示。

什么是复杂的对象?

一个类的构造函数参数超过4个,而且这些参数有些是可选的,我们要创建这个类的对象就需要设置不同的构造函数。

public class Computer {
    private String cpu;
    private String power;
    private String fan;
    private String display;//可选
    private String keyword;//可选
    }

构造函数


使用场景

当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。

链式方法实现

  1. 创建Computer类,定义5中属性,在Computer类内部定义静态内部类Builder,它拥有和Computer一样的属性。
  2. 在Builder中编写set方法,完成属性赋值,同时方法的返回值为Builder。
  3. 在Computer中创建一个private的构造函数,参数为Builder类型,由Builder来完成Computer属性的赋值。
  4. 在Builder内编写builder方法来创建Computer对象。
public class Computer {
    private String cpu;
    private String power;
    private String fan;
    private String display;
    private String keyword;
    private Computer(Builder builder){
        this.cpu=builder.cpu;
        this.power=builder.power;
        this.fan=builder.fan;
    }
    public static class Builder{
        private String cpu;
        private String power;
        private String fan;
        private String display;
        private String keyword;
        
        public Builder (String display,String keyword){
            this.display=display;
            this.keyword=keyword;
        }

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

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

        public Builder setFan(String fan) {
            this.fan = fan;
            return this;
        }
        Computer builder(){
            return new Computer(this);
        }
        
    }
}

测试

public class Main {
    public static void main(String[] args) {

        Computer computer = new Computer.Builder("","").setCpu("英伟达")
                .setFan("双轮风扇")
                .setPower("极品电源")
                .builder();
        System.out.println(computer);
    }
}

https://zhuanlan.zhihu.com/p/58093669

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值