個人博客
http://www.milovetingting.cn
Builder模式
模式介紹
Builder模式是一步一步創建一個復雜物件的創建型模式,它允許用戶在不知道內部構建細節的情況下,可以更精細地控制物件的構建流程,該模式是為了將構建復雜物件的程序和它的部件解耦,使得構建程序和部件的表示隔離開來,
模式定義
將一個復雜物件的構建與它的表示分離,使得同樣的構建可以創建不同的表示,
使用場景
-
相同的方法,不同的執行順序,產生不同的事件結果時,
-
多個部件或零件,都可以裝配到一個物件中,但是產生的運行結果又不相同時,
-
產品類非常復雜,或者產品類中的呼叫順序不同產生了不同的作用,
-
當初始化一個物件特別復雜,如引數多,且很多引數都具有默認值時,
模式的簡單實作
Computer類
public class Computer {
private String mCpu;
private String mScreen;
private String mHd;
public Computer(String cpu, String screen, String hd) {
this.mCpu = cpu;
this.mScreen = screen;
this.mHd = hd;
}
@Override
public String toString() {
return "Computer [mCpu=" + mCpu + ", mScreen=" + mScreen + ", mHd=" + mHd + "]";
}
}
ComputerBuilder類
public class ComputerBuilder {
public static class Builder {
private String mCpu = "cpu";
private String mScreen = "screen";
private String mHd = "hd";
public Builder cpu(String cpu) {
mCpu = cpu;
return this;
}
public Builder screen(String screen) {
mScreen = screen;
return this;
}
public Builder hd(String hd) {
mHd = hd;
return this;
}
public Computer build() {
return new Computer(mCpu, mScreen, mHd);
}
}
}
默認使用
public static void main(String[] args) {
Computer computer = new ComputerBuilder.Builder().build();
System.out.println(computer);
}
輸出日志
Computer [mCpu=cpu, mScreen=screen, mHd=hd]
自定義引數
public static void main(String[] args) {
Computer computer = new ComputerBuilder.Builder().cpu("CPU").screen("SCREEN").hd("HD").build();
System.out.println(computer);
}
輸出日志
Computer [mCpu=CPU, mScreen=SCREEN, mHd=HD]
小結
Builder模式在Android開發中較為常用,通常作為配置類的構建器,將配置的構建和表示分離開來,同時也是將配置從目標類中隔離出來,避免過多的setter方法,Builder模式比較常見的實作形式是通過呼叫鏈實作,使得代碼更簡潔、易懂,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/37013.html
標籤:Android
上一篇:Android中使用getDrawable時提示:Call requires API level 21(current min is 15)
