一、定義
在設計模式中對builder模式的定義是用於構建複雜物件的一種模式,所構建的物件往往需要多步初始化或賦值才能完成。使用builder模式就是用來替代多引數建構函式。
二、在android中的應用
通過檢視原始碼發現,alertdialog的構造方法都是protected修飾,即除了它的子類,其他類是無法訪問這個方法的。因此在fragment和activity中,無法直接建立alertdialog例項,必須通過builder物件。
2、okhttp中的request.builder
這裡通過首先建立乙個request.builder物件,再通過他的build()方法建立出最終的request物件。
結合原始碼分析
首先,request是final型別的,因此他不會有子類;再有就它唯一的構造方法是private的;因此,對於開發者來說就無法通過普通的方法(通過new)建立乙個request物件了。
補充:builder一般都定義為static靜態內部類,靜態內部類與非靜態內部類區別如下:
1、內部類的例項一定要繫結在外部類的例項中。也就是說,在建立內部類之前要先在外部類中要利用new關鍵字來建立這個內部類的物件。而靜態內部類不需要繫結在外部類的例項中,也就是說,在建立內部類時,外部類不需要利用new關鍵字來建立這個內部類的物件。
2、在非靜態內部類中不可以宣告靜態成員。
3、靜態內部類不能夠從靜態內部類的物件中訪問外部類的非靜態成員(包括成員變數與成員方法)。只能夠引用外部類中的靜態成員方法或者成員變數。
設計模式之Builder模式
builder模式是將複雜物件的構建和他的表示分離,使得同樣的建立過程可以建立不通的表示 其結構圖為 示例 為 class product1 class product2 class builder class concretebuilder1 public builder virtual conc...
設計模式之Builder模式
builder模式 乙個複雜物件的構建與他的表示分離,使得同樣的構建過程可以建立不同的表示 場景 1 相同的方法,不同的執行順序,產生不同的事件結果 2多個部件或零件,都可以裝配到乙個物件中,但是產生的執行結果又不同。3產生類很複雜,產品類中的呼叫順序產生不同的作用 4初始化物件很複雜,引數很多,且...
設計模式之Builder模式
builder模式也屬於一種建立模式,它主要用來產生比較複雜的物件。假如我們現在有 乙個很複雜的物件,它有好多部件組成,如果我們用new在構造器中構建的話,這樣 的耦合度很高,不能實現解耦的目的。這就要求我們將各個部件的生產和各個部 件的組裝分開來做。就好比生產一台電腦,一些部門專門負責生產各種的部...