在我們日常研發中,建造者模式是使用的很多的一種模式。其實很多時候我們在不知不覺中就使用了別人設計的建造者模式而從中受益。比如gson、okhttp、retrift。如下**:
gson gson = new gsonbuilder()
.registertypeadapter(string.class,new stringadapter())
.registertypeadapter(integer.class,new integeradapter())
.registertypeadapter(int.class,new integeradapter())
.create();
先通過builder然後在設定一些想要設定的引數,最後通過create()得到需要的物件。比起我們通常使用的建構函式、setter等的設定其好處是鏈式呼叫,欲設定的引數清晰,返回物件時機明確。
那我們也可以參考這種設計來設計我們自己類為建造者模式進行建造。
設計乙個student類如下:
public class student
public string getname()
public static class builder
public builder setphone(string phone)
public builder setaddress(string address)
public student build()
return student;}}
@override
public string tostring()
}
核心思想在內部的靜態bulider類,我們將建造的時候必須的引數放在builder的建構函式中,非必須引數通過鏈式呼叫進行設定。最後通過build()方法返回student物件。build()方法呼叫student的私有建構函式,這個建構函式接收builder作為引數。需要注意的是,如果要對返回物件的引數做合法化驗證的話,一定要先構建物件在進行驗證。因為在構建的過程中,是非執行緒安全的,意味著如果沒構建之前去檢測的話,可能會被別的執行緒更改掉檢測的引數而失去了檢測的意義。
最後附上呼叫的**:
student student = new student.builder("calm","33")
.setaddress("china")
.setphone("19999999999")
.build();
僅以此記錄建造者模式的使用方式。 android 設計模式之builder(一)
android中的builder模式非常的常見,應用的也很廣泛,不okhttp,alertdialog等等都有使用這種模式,這種模式的好處就是講操作的細節隱藏了起來,只關注結果 今天我就簡單地分析下alertdialog的原始碼,但是呢,先來寫乙個關於builder的簡單demo,這樣理解alert...
Android設計模式之Builder模式
設計模式是我們在平時程式設計的過程中對一些常見的問題場景總結出來的最優程式設計套路,按照設計模式的思想,我們在程式設計的過程中遇到類似的問題時可以快速的套用對應的設計模式,從而高效的解決問題。在平時的開發過程中,我們也經常接觸到各種設計模式,甚至我們自己寫的 也會不自覺的使用到設計模式,只是可能叫不...
android設計模式 builder設計模式
builder模式是建立乙個複雜物件的建立型模型,允許使用者在不知道複雜物件的內部細節的情況下進行精細化的控制,是將構建複雜物件的過程和控制物件的過程進行分隔開,從而達到解耦的目的。1.實現方法 在複雜的物件的外面建立乙個控制物件builder,並且在使用方式上一般使用鏈式呼叫,也就是每個方法中re...