JAVA构造函数是多个参数时,建议使用构建器

本文详细介绍了Java中构建器模式的实现方式,通过一个具体的People类实例,展示了如何使用构建器来简化对象创建过程,特别是在面对多个参数时,构建器模式能够提供更清晰的代码结构。

JAVA构造函数是多个参数时,建议使用构建器

构建器事例

People类

public class People {
private final int id;
private final int age;
private final String name;
private final String addr;

public static class Builder{
    private final int id;
    private final String name;

    private int age = 0;
    private String addr = "";

    public Builder(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public Builder age(int val){
        age = val;
        return this;
    }

    public Builder addr(String val){
        addr = val;
        return this;
    }

    public People build(){
        return new People(this);
    }
}

private People(Builder builder) {
    this.id = builder.id;
    this.age = builder.age;
    this.name = builder.name;
    this.addr = builder.addr;
}

public int getId() {
    return id;
}

public int getAge() {
    return age;
}

public String getName() {
    return name;
}

public String getAddr() {
    return addr;
}

}

使用

public class HollerWord {

public static void main(String[] args) {
    //多个参数是使用构建器
    People p = new People.Builder(1, "张三").addr("北京").age(12).build();
    System.out.println(p.getAddr());
}

}

Java中构造多个函数参数有多种方法。 ### 使用多个构造器 可以为类定义多个构造器,每个构造器可以有不同数量或类型的参数。例如在`NumberValue`类中,有两个构造函数,一个不带参数,另一个带`int`类型的单个参数,可通过不同的构造器来满足不同的初始化需求 [^3]。示例代码如下: ```java class NumberValue { private int num; // 无参构造函数 public NumberValue() { this.num = 0; } // 带参构造函数 public NumberValue(int num) { this.num = num; } public void display() { System.out.println(num); } } ``` ### 使用构建器(Builder)模式 与构造器相比,Builder模式有一定优势,它可以有多个可变参数。因为Builder利用单独的方法来设置每个参数,每个`setter`方法都可以有一个可变参数。示例代码如下: ```java class Person { private String name; private int age; public static class Builder { private String name; private int age; public Builder name(String name) { this.name = name; return this; } public Builder age(int age) { this.age = age; return this; } public Person build() { return new Person(this); } } private Person(Builder builder) { this.name = builder.name; this.age = builder.age; } } // 使用示例 public class Main { public static void main(String[] args) { Person person = new Person.Builder() .name("Alice") .age(30) .build(); } } ``` ### 在构造函数或方法中传递参数构造函数或方法中传递参数也是常见的方式。不过要注意避免对象之间的紧密耦合,例如可以使用接口来构建对象。如创建一个`TransactionDataExtractor`接口,实现不同的类来构建对象 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值