靜態(tài)內(nèi)部類2

利用靜態(tài)內(nèi)部類實(shí)現(xiàn)建造者模式,建造者模式是用靜態(tài)內(nèi)部類創(chuàng)建外部類對(duì)象,將整個(gè)建造過(guò)程和用戶看到的界面分開(kāi)來(lái)。

程序中還會(huì)出現(xiàn)鏈?zhǔn)骄幊蹋宄準(zhǔn)骄幊痰母拍睢?/p>

Weixin類:

重點(diǎn)1.在每個(gè)set方法會(huì)返回當(dāng)前對(duì)象,這樣才能實(shí)現(xiàn)鏈?zhǔn)骄幊獭?/p>

? ? ? ?2.在最后會(huì)返回new ?Weixin(this) ?調(diào)用Weixin類的構(gòu)造方法。

? ? ?此處和普通的 Weixin ?weixin = new Weixin();一個(gè)道理



package lianxi;

public class Weixin {

String name;

private String pswd;

private int age;

public Weixin(String name, String pswdString, int age) {

this.name = name;

this.pswd = pswdString;

this.age = age;

}

public Weixin(Build build) {

this.name = build.name;

this.pswd = build.pswdString;

this.age = build.age;

}

public Weixin() {

}

static class Build{

private String name;

private String pswdString;

private int age;

public Build(String name, String pswdString, int age) {

super();

this.name = name;

this.pswdString = pswdString;

this.age = age;

}

public String getName() {

return name;

}

public Build setName(String name) {

this.name = name;

return this;

}

public String getPswdString() {

return pswdString;

}

public? Build setPswdString(String pswdString) {

this.pswdString = pswdString;

return this;

}

public int getAge() {

return age;

}

public? Build setAge(int age) {

this.age = age;

return this;

}

@Override

public String toString() {

return "Inner [name=" + name + ", pswdString=" + pswdString

+ ", age=" + age + "]";

}

public Weixin build(){

return new Weixin(this);//會(huì)調(diào)用外部類Weixin的構(gòu)造方法

}

}

}


main:

package lianxi;

import lianxi.Weixin.Build;

public class Test2 {

public static void main(String[] args) {

//Weixin weixin = new Weixin("lxm","123456",22);

Build build = new Build("lxm","123456",22);

Weixin weixin = build.build();//

//利用鏈?zhǔn)骄幊虒?shí)現(xiàn)重新賦值或修改值

build.setName("lmm").setPswdString("111").setAge(15);

System.out.println(build);

//還可以這樣

Weixin weixin2 = new Build("","",0).setName("sss").setAge(26).setPswdString("5656").build();

}

}




1.明白建造者是怎么一種設(shè)計(jì)模式

2.利用鏈?zhǔn)骄幊炭梢院?jiǎn)化代碼,給屬性賦值或者改變值

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,993評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,779評(píng)論 18 399
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,779評(píng)論 0 33
  • 前言 : Android中的AlertDialog用的就是builder設(shè)計(jì)模式,圖片加載控件Universal-...
    正陽(yáng)Android閱讀 2,802評(píng)論 0 0
  • 1.我遇到的麻煩 在使用 Android Studio 的過(guò)程中,遇到了各種各樣層出不窮的報(bào)錯(cuò)和阻攔。我會(huì)在這篇文...
    撿書(shū)的騰騰閱讀 828評(píng)論 0 0