利用Builder方式創建對象示例代碼

這篇文章主要給大家介紹了關於利用Builder方式創建對象的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨着小編來一起學習學習吧

前言

在創建對象需要初始化數據,數據參數不容易區別,可傳可不傳的時候,可以考慮使用Builder建造方法創建。每每當看到別人寫的用Bulder方式來調用,就覺得so cool,那就自己也來用Builder方式創建對象吧。

下面話不多說了,來一起看看詳細的介紹吧

現在要錄入一系列人員的基本信息的示例:

創建Person類

public class Person {
private String name;
private int age;
private float height;
private float weight;

public Person(String name, int age, float height, float weight) {
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}

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 float getHeight() {
return height;
}

public void setHeight(float height) {
this.height = height;
}

public float getWeight() {
return weight;
}

public void setWeight(float weight) {
this.weight = weight;
}
}

那麼創建對象就是這樣,後面參數不容易看出表示的是什麼,可讀性不強

new Person("馮提莫",18,150,43);
new Person("溫婉",17,164,48);

用Builder模式進行改造

創建一個Builder類,屬性和Person類一樣,加上SetXxx()方法

static class Builder{
private String name;
private int age;
private float height;
private float weight;

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}

public void setHeight(float height) {
this.height = height;
}

public void setWeight(float weight) {
this.weight = weight;
}
}

將Person的構造方法改爲傳入Builder對象,將Builder對象的屬性值都賦予Person對象

public Person(Builder builder){
this.name = builder.name;
this.age = builder.age;
this.height = builder.height;
this.weight = builder.weight;
}

改造Builder類,關鍵步驟是將各個set方法返回Builder類對象,這樣就能繼續愉快地連續調用set方法了,最後調用build()創建方法返回Person對象。

static class Builder{
private String name;
private int age;
private float height;
private float weight;

public Builder setName(String name) {
this.name = name;
return this;
}

public Builder setAge(int age) {
this.age = age;
return this;
}

public Builder setHeight(float height) {
this.height = height;
return this;
}

public Builder setWeight(float weight) {
this.weight = weight;
return this;
}

public Person build(){
return new Person(this);
}
}

將各個set方法的返回值類型改爲Builder,每次都返回builder對象,這樣才能將set方法實現連續的鏈式調用。

build()方法創建一個person對象,會調用Person的帶參構造方法,將builder對象的屬性依次賦予person對象。person中的屬性值就是鏈式調用set方法的各個值。

使用Builder模式創建Person對象,明顯看出代碼可讀性大大增強。注:Builder創建方式通常是在創建的對象少的情況下使用。

Person person = new Person.Builder()
.setName("莉哥")
.setAge(20)
.setHeight(162)
.setWeight(45)
.build();

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對神馬文庫的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章