安卓有很多設計模式,現在我們來說說構建者模式。
什麼是構建者模式?
參考網上的描述:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
我是這麼理解的,假如你想組裝一臺電腦主機來玩遊戲,可是你又不懂組裝的方式。所以我們需要請會組裝的人來幫忙。那組裝一臺主機需要知道你想要什麼樣的處理器,內存條,硬盤啊,等等。這樣既然請別人幫忙了,我們只需要告訴他我需要裝什麼樣的零件。那麼這樣你就省去了自己組裝的煩惱。
總之,簡單來說就是,讓別人幫你解決煩惱去完成你想要達成的目的。
那代碼上是怎麼實現的呢?
實現?
首先創建一個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的使用是一樣的。