您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java建造者模式案例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java建造者模式案例分析”吧!
建造者(Builder)模式的定義: 指將一個(gè)復(fù)雜對(duì)象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示,這樣的設(shè)計(jì)模式被稱為建造者模式。它是將一個(gè)復(fù)雜的對(duì)象分解為多個(gè)簡(jiǎn)單的對(duì)象,然后一步一步構(gòu)建而成。它將變與不變相分離,即產(chǎn)品的組成部分是不變的,但每一部分是可以靈活選擇的。
1、封裝性好,構(gòu)建和表示分離。
2、擴(kuò)展性好,各個(gè)具體的建造者相互獨(dú)立,有利于系統(tǒng)的解耦。
3、客戶端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié),建造者可以對(duì)創(chuàng)建過(guò)程逐步細(xì)化,而不對(duì)其它模塊產(chǎn)生任何影響,便于控制細(xì)節(jié)風(fēng)險(xiǎn)。
1、產(chǎn)品的組成部分必須相同,這限制了其使用范圍。
2、如果產(chǎn)品的內(nèi)部變化復(fù)雜,如果產(chǎn)品內(nèi)部發(fā)生變化,則建造者也要同步修改,后期維護(hù)成本較大。
建造者(Builder)模式和工廠模式的關(guān)注點(diǎn)不同:建造者模式注重零部件的組裝過(guò)程,而工廠方法模式更注重零部件的創(chuàng)建過(guò)程,但兩者可以結(jié)合使用。
案例: 神醫(yī)豆豆煉丹
產(chǎn)品角色(Product):丹藥
抽象建造者(Builder):抽象丹方
具體建造者(Concrete Builder):具體丹方
指揮者(Director):神醫(yī)豆豆
神醫(yī)豆豆煉制九轉(zhuǎn)仙丹和太虛化神丹
注意:為了省事這里說(shuō)的丹方內(nèi)容只有丹藥名字和效果,并沒(méi)有材料之類的。
丹藥類聲明煉丹的名稱和效果兩個(gè)屬性
public class Dan { /* cailiao 丹藥的名稱 danhuo 丹藥的效果*/ private String name; private String xiaoguo; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getXiaoguo() { return xiaoguo; } public void setXiaoguo(String xiaoguo) { this.xiaoguo = xiaoguo; } }
抽象類,new一個(gè)丹藥對(duì)象,聲明兩個(gè)抽象方法分別是給丹藥命名和賦予丹藥效果,還有一個(gè)生成丹藥的方法。
//抽象丹方 abstract class DanFang { Dan dan = new Dan(); public abstract void name(); public abstract void xiaoguo(); public Dan getDan() { return dan; } }
具體丹方類繼承丹方類,并且實(shí)現(xiàn)兩個(gè)抽象方法。
//九轉(zhuǎn)仙丹丹方 public class JiuZhuan extends DanFang { @Override public void name() { dan.setName("九轉(zhuǎn)仙丹"); } @Override public void xiaoguo() { dan.setXiaoguo("原地成仙"); } }
具體丹方類繼承丹方類,并且實(shí)現(xiàn)兩個(gè)抽象方法。
//太虛化神丹丹方 public class Taixu extends DanFang { @Override public void name() { dan.setName("太虛化神丹"); } @Override public void xiaoguo() { dan.setXiaoguo("意念化神"); } }
聲明一個(gè)丹方屬性,一個(gè)有參構(gòu)造方法,一個(gè)煉丹方法。
public class DouDou { private final DanFang danLu; public DouDou(DanFang danLu) { this.danLu = danLu; } //煉丹方法 public Dan lian() { //放入材料 danLu.name(); //釋放丹火 danLu.xiaoguo(); //成丹 return danLu.getDan(); } }
煉制兩個(gè)丹藥。
public class Demo { public static void main(String[] args) { //煉制九轉(zhuǎn)仙丹 //new一個(gè)九轉(zhuǎn)仙丹的丹方 DanFang jiu = new JiuZhuan(); //把丹方給豆豆 DouDou dou = new DouDou(jiu); //煉丹生成丹藥 Dan dan = dou.lian(); System.out.printf("丹藥名稱:%s 丹藥效果:%s", dan.getName(), dan.getXiaoguo()); System.out.println(); //煉制太虛化神丹 //new一個(gè)九轉(zhuǎn)仙丹的丹方 DanFang tai = new Taixu(); //把丹方給豆豆 DouDou dous = new DouDou(tai); //煉丹生成丹藥 Dan dans = dous.lian(); System.out.printf("丹藥名稱:%s 丹藥效果:%s", dans.getName(), dans.getXiaoguo()); } }
感謝各位的閱讀,以上就是“Java建造者模式案例分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java建造者模式案例分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。