安卓有很多设计模式,现在我们来说说构建者模式。
什么是构建者模式?
参考网上的描述:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
我是这么理解的,假如你想组装一台电脑主机来玩游戏,可是你又不懂组装的方式。所以我们需要请会组装的人来帮忙。那组装一台主机需要知道你想要什么样的处理器,内存条,硬盘啊,等等。这样既然请别人帮忙了,我们只需要告诉他我需要装什么样的零件。那么这样你就省去了自己组装的烦恼。
总之,简单来说就是,让别人帮你解决烦恼去完成你想要达成的目的。
那代码上是怎么实现的呢?
实现?
首先创建一个Person类。 里面分别有五个属性,并且给设置setter和getter方法。代码如下:
public class Person {
String name;
int age;
int sex;
String address;
int id;
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 getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
然后,我们在其(Person类)里创建一个静态内部类。Builder
并且里面同样有和person一样的属性。仅提供setter方法。代码如下:
//提供一个构造代理的方法
public static class Builder{
String name;
int age=0;
int id=0;
int sex;
String address;
public Builder setName(String name){
this.name=name;
return this;
}
public Builder setAge(int age){
this.age=age;
return this;
}
public Builder setId(int id){
this.id=id;
return this;
}
public Builder setSex(int sex){
this.sex=sex;
return this;
}
public Builder setAdress(String address){
this.address=address;
return this;
}
}
代码写完之后,我们在Person类里添加一个构造方法,让Builder和Person类绑定。
public Person(Person.Builder builder){
this.name=builder.name;
this.age=builder.age;
this.sex=builder.sex;
this.address=builder.address;
this.id=builder.id;
}
最后在Builder类里,添加构造方法:
public Person build(){
return new Person(this);
}
然后在MainActivity里面使用这个方法。
Person builder=new Person.Builder()
.setName("ss")
.setAge(18)
.setId(1)
.setAdress("中国")
.setSex(0)
.build();
是不是很熟悉?和Okhttp的使用是一样的。