Java構建器(Builder)
Java構建器(Builder)
在設計模式中對Builder模式的定義是用於構建複雜物件的一種模式,所構建的物件往往需要多步初始化或賦值才能完成。那麼,在實際的開發過程中,我們哪些地方適合用到Builder模式呢?其中使用Builder模式來替代多引數建構函式是一個比較好的實踐法則。
考慮用一個類表示包裝食品外面現實的營養成分,這些標籤通常有許多的引數,如果用重疊構造器模式,就必須寫多個構造器(constructor):
- 不帶引數的構造器
- 一個引數的構造器
- 二個引數的構造器
- …
下面我們使用Java的構建器(Builder)模式
public class NutritionFacts {
private final int servingSize;
private final int servings;
private final int calories;
//NutritionFacts內部靜態類Builder類
//靜態類和靜態方法的使用比起來頻率很低
public static class Builder{
//靜態變數
private static int servingSize;
private static int servings ;
private int calories = 0;
//Builder自己的構造方法
public Builder(int servingSize,int servings){
this.servingSize = servingSize;
this.servings = servings;
}
//Builder的賦值方法,返回一個Builder物件,接下來可以接著操作
public Builder calories( int val){
this.calories = val;
return this;
}
//Builder的賦值方法2,返回一個Builder物件,接下來可以接著操作
//Builder的賦值方法3,返回一個Builder物件,接下來可以接著操作
//Builder的賦值方法4,返回一個Builder物件,接下來可以接著操作
//......
//builder 方法返回的是NutritionFacts 類
public NutritionFacts build(){
return new NutritionFacts(this);
}
}
//NutritionFacts的Constructor方法,傳入一個builder物件,對自己的引數賦值
private NutritionFacts(Builder builder){
servingSize =builder.servingSize;
servings = builder.servings;
calories = builder.calories;
}
//NutritionFacts自己的操作方法
public int getCalories(){
return this.calories;
}
}
public class test {
public static void main(String[] args){
//通過new NutritionFacts.Builder(1,2)建立了一個Builder類
//然後呼叫賦值方法calories給Builder的calories屬性賦值,返回Builder類
//可以繼續呼叫賦值方法,我偷懶沒寫了TAT
//最後呼叫Builder類的builde()返回我們需要的NutritionFacts物件。
NutritionFacts nf = new NutritionFacts.Builder(1,2).calories(3).build();
System.out.println(nf.getCalories());
}
}
相關文章
- Java採用內部構造器Builder模式進行對類進行構建JavaUI模式
- 透過lombok帶你讀透Builder構建器LombokUI
- OpenHarmony自定義構建函式:@Builder裝飾器函式UI
- 構建者模式(Builder pattern)模式UI
- .NET-9-計算機思想-構建器模式(Builder Pattern)計算機模式UI
- 使用Builder來構建一個物件UI物件
- 設計模式(五)Builder構建者模式設計模式UI
- [一、基本語法]4@Builder裝飾器:自定義構建函式UI函式
- Java 8中實現構建器模式Java模式
- 遇到多個構造器引數時考慮使用構建器(Effective Java )Java
- 使用管道流實現Java 8階段構建器Java
- Maven 構建 Java 專案MavenJava
- Java的建構函式Java函式
- JAVA專案映象構建Java
- docker 構建java 部署包DockerJava
- 構建FTP伺服器FTP伺服器
- Builder模式與Java語法UI模式Java
- java構造器Java
- Java泛型建構函式Java泛型函式
- 使用Maven構建Java專案MavenJava
- Java建構函式詳解Java函式
- java 中構建不可變物件Java物件
- laravel 使用schema構建器,新增構建表的列型別Laravel型別
- 構建前端mock伺服器前端Mock伺服器
- Java設計模式之builder模式Java設計模式UI
- Java Builder 模式,你搞懂了麼?JavaUI模式
- The Builder pattern simulates named optional parameters(Java)UIJava
- 使用 Micronaut和OpenFaaS 構建無伺服器Java 應用程式 - openvalue伺服器Java
- 構建Java物件的五種方法Java物件
- Java應用構建並部署ECSJava
- [Android、Java]加快gradle構建AndroidJavaGradle
- 構建Java Web開發環境JavaWeb開發環境
- 構建Java Agent,而不是使用框架Java框架
- 使用Gradle構建Java專案GradleJava
- Java建構函式的繼承Java函式繼承
- 2、遇到多個構造引數的時候需要考慮使用構建器(effective java)Java
- urlcat:JavaScript的URL構建器庫JavaScript
- 分類學習器的構建