日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

(一)Builder(建造者)模式

發布時間:2023/12/15 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (一)Builder(建造者)模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們一般在構建javabean的對象的時候通常有三種寫法:

  1.直接通過構造函數傳參的方式設置屬性,這種方法如果屬性過多的話會讓構造函數十分臃腫,而且不能靈活的選擇只設置某些參數。

  2.采用重疊構造區模式,先寫第一個只有必要參數的構造器,第二個構造器有一個可選參數,第三個構造器有兩個可選參數,以此類推;如果參數比較多時,類里面會出現一堆構造方法,并且閱讀困難,很容易就把兩個屬性參數寫顛倒位置了,編譯不會出錯,但運行就會出錯了

  3.采用Javabean 的寫法,寫一堆屬性的setter方法,通過生成對象,讓后調用setter方法給屬性賦值。 ?這種方法有個劣勢就是構造的過程被分到幾個調用中,在構造中可能處于不一致狀態,無法保證一致性。

今天我們可以嘗試采用Builder模式的寫法:

  

public class Person {private String name;private String address;private int age;private int sex;public Person(Builder builder) {this.name = builder.name;this.address = builder.address;this.age = builder.age;this.sex = builder.sex;}public static class Builder{private String name;private String address;private int age;private int sex;public Builder(String name) {this.name = name;}public Builder address(String address){this.address = address;return this;}public Builder age(int age){this.age = age;return this;}public Builder sex(int sex){this.sex = sex;return this;}public Person build(){return new Person(this);}}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getSex() {return sex;}public void setSex(int sex) {this.sex = sex;} }
使用如下:
Person person = new Person.Builder("張三").address("上海").build(); Builder?方法是Person中的一個靜態內部類,屬性和Person中的屬性也都一致,所以屬性值在Builder中設置,然后通過builder方法構建Person對象。

采用javaBean 寫法的缺點就是, 一但調用 new Person() 構造函數后,對象就被創建了,以后在調用 set 方法設置屬性的時候這里設置一下,其他地方又設置一下,無法保證對象的狀態一致性,而且代碼的可讀性很差

1. Builder 方式創建的對象,在調用 build() 方法之前是不會創建Request 對象的,所有的屬性設置都必須在 build() 方法之前,而且創建了 Request 對象后就不可以更改其屬性了,這就保證了對象狀態的唯一性,而且代碼的可讀性也提高了。

2.Builder可以實現類似setter的自由選擇參數

轉載于:https://www.cnblogs.com/lkf-00889/p/7286338.html

總結

以上是生活随笔為你收集整理的(一)Builder(建造者)模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。