Builder模式也是很常用的一个模式,比如Android中的AlertDialog使用的就是Builder设计模式,下面举个例子来理解一下.
1.首先我们先创建一个Person类
class Person {
public String name; //姓名
public int age; //年龄
public int income; //收入
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getIncome() {
return income;
}
public void setIncome(int income) {
this.income = income;
}
}
2.为了更方便的赋值,我们可能还会加个构造方法
public Person(String name, int age, int income) {
this.name = name;
this.age = age;
this.income = income;
}
3.下面我们来给这个Person类赋值
public static void main(String[] args) {
Person Person = new Person("吕凯旋",23,8888);
}
4.假如别人用你的Person类,嗯…第一个参数应该是姓名,第二个参数…猜一下可能是年龄吧,第三个是什么鬼?这时就不得不戳进源码查看,举这个例子就是想让你知道,这样写的话,代码的阅读性不是太好,下面使用Builder模式来写
class Person {
public String name; //姓名
public int age; //年龄
public int income; //收入
private Person(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.income = builder.income;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getIncome() {
return income;
}
public void setIncome(int income) {
this.income = income;
}
//静态内部类
public static class Builder{
private String name; //姓名
private int age; //年龄
private int income; //收入
public Builder name(String name) {
this.name = name;
return this;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder income(int income) {
this.income = income;
return this;
}
public Person build(){
return new Person(this);
}
}
}
5.可以看到我们定义了一个静态内部类,然后用私有构造方法来接收这个内部类并赋值
private Person(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.income = builder.income;
}
6.下面我们来给Person类进行赋值
new Person.Builder()
.name("吕凯旋")
.age(23)
.income(8888)
.build();