Builder模式的簡單使用

Builder模式是一種一步一步創(chuàng)建一個復雜對象的設計模式殖演,我認為這種設計模式的精髓就主要有兩點:其一壹堰,用戶使用簡單隙赁,并且可以在不需要知道內部構建細節(jié)的情況下杖狼,就可以構建出復雜的對象模型;其二猿挚,對于設計者來說咐旧,這是一個解耦的過程,這種設計模式可以將構建的過程和具體的表示分離開來亭饵。

package BuilderPattern;

public class Student {

private int stuNum ;

? ? private String name ;

? ? private int age ;

? ? private String address ;

? ? private boolean girlfriend ;

? ? private Student(){}//定義私有構造器休偶,只能在類內部使用(提供給靜態(tài)內部類創(chuàng)建一個對象)

???? // 定義私有的有參構造器 ,即給對象的屬性賦值,由靜態(tài)內部類調用

? ? private Student(int stuNum,String name,int age,String address,boolean girlfriend){

? ? ? ? this.stuNum = stuNum ;

? ? ? ? this.name = name ;

? ? ? ? this.age = age ;

? ? ? ? this.address = address ;

? ? ? ? this.girlfriend = girlfriend ;

? ? }

?? public int getStuNum() {

????? ???? return stuNum;

? ? }

??? public void setStuNum(int stuNum) {

??????????? this.stuNum = stuNum;

? ? }

??? public StringgetName() {

??????????? return name;

? ? }

??? public void setName(String name) {

??????????? this.name = name;

? ? }

??? public int getAge() {

??????????? return age;

? ? }

?? public void setAge(int age) {

??????? this.age = age;

? ? }

?? public StringgetAddress() {

????????? return address;

? ? }

?? public void setAddress(String address) {

????????? this.address = address;

? ? }

?? public boolean isGirlfriend() {

?????????? return girlfriend;

? ? }

??? public void setGirlfriend(boolean girlfriend) {

?????????? this.girlfriend = girlfriend;

? ? }

??? public static class Builder{//靜態(tài)內部類辜羊,通過該類來創(chuàng)建一個外部類對象踏兜,使用鏈式調用

? ? ? ??? private Studentstudent ;//創(chuàng)建一個外部類對象

????????? //構造一個內部類對象,通過該對象設置屬性值

????????? //如果存在必填參數八秃,可以以帶參構造函數的方式傳過來

? ? ? ??? public Builder(int stuNum,String name,int age,String address,boolean girlfriend){

?????????????????? student =new Student(stuNum,name,age,address,girlfriend);

? ? ? ?? }

???????? public Builder(){

???????????? student =new Student();

? ? ? ?? }

???????? public Builder stuNum(int stuNum){

??????????????? student.stuNum = stuNum;

??????????????? return this ;

? ? ? ?? }

??????? public Builder name(String name){

?????????????? student.name = name;

?????????????? return this ;

? ? ? ?? }

??????? public Builder age(int age){

???????????????? student.age = age;

???????????????? return this ;

? ? ? ?? }

???????? public Builder address(String address){

??????????????????? student.address = address;

??????????????????? return this ;

? ? ? ? }

??????? public Builder girlfriend(boolean girlfriend){

????????????????? student.girlfriend = girlfriend;

????????????????? return this ;

? ? ? ? }

??????? public Student build(){

???????????????? return student;

? ? ? ? }

??? }

}

調用:

// 第一種方式

Student student1 =new Student.Builder(1,"老王",36,"隔壁",false)

?????????????????? .build();

//第二種方式

Student student2 =new Student.Builder()

?????????? .stuNum(2)

?????????? .name("小張")

?????????? .age(20)

?????????? .address("上海")

?????????? .girlfriend(true)

?????????? .build();

System.out.println(student1.toString() +" \n" + student2.toString());

輸出:????? 我重寫了toString()

stuNo:1,name:老王,age:36,address:隔壁,grilfriend:false

stuNo:2,name:小張,age:20,address:上海,grilfriend:true

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末碱妆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昔驱,更是在濱河造成了極大的恐慌疹尾,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纳本,居然都是意外死亡窍蓝,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門繁成,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吓笙,“玉大人,你說我怎么就攤上這事巾腕∶婢Γ” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵尊搬,是天一觀的道長叁鉴。 經常有香客問我,道長佛寿,這世上最難降的妖魔是什么幌墓? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮狗准,結果婚禮上克锣,老公的妹妹穿的比我還像新娘茵肃。我一直安慰自己腔长,他們只是感情好,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布验残。 她就那樣靜靜地躺著捞附,像睡著了一般。 火紅的嫁衣襯著肌膚如雪您没。 梳的紋絲不亂的頭發(fā)上鸟召,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音氨鹏,去河邊找鬼欧募。 笑死,一個胖子當著我的面吹牛仆抵,可吹牛的內容都是我干的跟继。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镣丑,長吁一口氣:“原來是場噩夢啊……” “哼舔糖!你這毒婦竟也來了?” 一聲冷哼從身側響起莺匠,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤金吗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體摇庙,經...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡旱物,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了卫袒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片异袄。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玛臂,靈堂內的尸體忽然破棺而出烤蜕,到底是詐尸還是另有隱情,我是刑警寧澤迹冤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布讽营,位于F島的核電站,受9級特大地震影響泡徙,放射性物質發(fā)生泄漏橱鹏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一堪藐、第九天 我趴在偏房一處隱蔽的房頂上張望莉兰。 院中可真熱鬧,春花似錦礁竞、人聲如沸糖荒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捶朵。三九已至,卻和暖如春狂男,著一層夾襖步出監(jiān)牢的瞬間综看,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工岖食, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留红碑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓泡垃,卻偏偏與公主長得像析珊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兔毙,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理唾琼,服務發(fā)現(xiàn),斷路器澎剥,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 前言 : Android中的AlertDialog用的就是builder設計模式锡溯,圖片加載控件Universal-...
    正陽Android閱讀 2,765評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法赶舆,類相關的語法,內部類的語法祭饭,繼承相關的語法芜茵,異常的語法,線程的語...
    子非魚_t_閱讀 31,632評論 18 399
  • 破曉黎明倡蝙,疏影寒窗九串,瓊樓梅妝,錦城山色寺鸥,淚成霜; 誰在執(zhí)筆猪钮,搖曳心殤?拋鉤鎖月,寒煙陌上胆建,情難忘; 伊若花開烤低,可栩...
    錦州悟空閱讀 767評論 0 7
  • 前言 由于前期趕項目,所以在項目中難免多了一些bug笆载,最近項目閑了下來扑馁,為了能夠快速定位到線上版本bug位置,經過...
    yuyangkk閱讀 15,670評論 18 38