Java构造器的优化

构造器的优化
在初始化类的过程中,一般采用的是 new ClassName();去初始化对象,当该类所带有的属性和特征比较多时,用户也可以提供带有不同参数的构造方法,可是当参数过多且存在必要参数和选中参数的时候,提供大量的构造方法就回显得臃肿且意思不明确。
在此时呢可以采用构建器的思路去处理当前的对象,构建器的思路是在类的内部提供一个内部类,且内部类提供一个包括必须参数的构造方法,还有包可能用到的set参数的方法,还需要提供一个对外开放得到外部类实例的方法。
大体的思路说完了,直接上代码。
主要类`
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* @author zhaozx
*builder模式的构造方法
*最后采用build方法得到想要的对象
*/
public class TestBuilderMode {

private final int param1;
private final int param2;
private final int param3;
private final int param4;
private final int param5;
private final int param6;
private final int param7;
private final int param8;

public static class Builder{
    //设置必须要的参数
    private final int param1;
    private final int param2;

    //设置可选的参数
    private int param3 = 0;
    private int param4 = 0;
    private int param5 = 0;
    private int param6 = 0;
    private int param7 = 0;
    private int param8 = 0;

    //设置必须参数的构造器
    public Builder(int param1,int param2){
        this.param1 = param1;
        this.param2 = param2;
    }

    public Builder param3(int param3){
        this.param3 = param3;
        return this;
    }

    public Builder param4(int param4){
        this.param4 = param4;
        return this;
    }

    public Builder param5(int param5){
        this.param5 = param5;
        return this;
    }

    public Builder param6(int param6){
        this.param6 = param6;
        return this;
    }

    public Builder param7(int param7){
        this.param7 = param7;
        return this;
    }

    public Builder param8(int param8){
        this.param8 = param8;
        return this;
    }

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

private TestBuilderMode(Builder build){
    param1 = build.param1;
    param2 = build.param2;
    param3 = build.param3;
    param4 = build.param4;
    param5 = build.param5;
    param6 = build.param6;
    param7 = build.param7;
    param8 = build.param8;
}

}`
测试类

public class UseBuilder {

    /**
     * @param args
     * 使用builder模式的构造方法,在参数多而且可变的情况下使用。
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TestBuilderMode builderMode = new TestBuilderMode.Builder(10, 20).param3(30).build();
    }

}

用户可以在需要的时候直接以.param()的方式进行对对象的参数进行赋值,方便且直观

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值