您的位置:首页 > Web前端

effective心得(2) 构造器中大量可选参数对比

2016-09-13 18:05 204 查看
静态工厂和构造器有个共同的局限性:它们都不能很好的扩展到大量的可选参数。这就是builder模式

比如java中一个类拥有多个标签的时候,使用构造器编写的时候,代码如下:



  这个构造器调用通常需要许多你不需要的设置的参数,但还是不得不为它们传递值,一句话:重叠构造器模式可行,但是当有许多参数时,客户端代码会很难编写,并且仍然

难以阅读。



遗憾的是,javaBeans模式自身有着很严重的缺点。因为构造过程中被分到几个调用中,在构造过程中javabean可能处于不一致的状态。

 幸运的是,还有第3种替代方法,既能保证重叠构造器模式那样的安全性,也能保证像javaBean模式那么好的可读性,这就是builder模式。

代码如下说明:

package com.mc.bsfram.others.entity;

public class Person {

private String name;
private String address;
private int age;
private double salarry;

private Person(Builder builder){
this.age=builder.age;
this.address=builder.address;
this.age=builder.age;
this.salarry=builder.salarry;
}

//static的Builder类
public static class Builder{

//成员变量应该会被赋予初始值
private String name;
private String address;
private int age;
private double salarry;

public Builder(String name){
this.name=name;

return this;
}

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

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

public Builder salarry(double salarry){
this.salarry=salarry;
return this;
}

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

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: