您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java建造者模式的示例分析”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Java建造者模式的示例分析”文章能幫助大家解決問題。
建造者模式(Builder Pattern),又叫生成器模式,是一種對(duì)象構(gòu)建模式 它可以將復(fù)雜對(duì)象的建造過程抽象出來,使這個(gè)抽象過程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)的對(duì)象。建造者模式是一步一步創(chuàng)建一個(gè)復(fù)雜的對(duì)象,它允許用戶只通過指定復(fù)雜對(duì)象的類型和內(nèi)容就可 以構(gòu)建它們,用戶不需要知道內(nèi)部的具體構(gòu)建細(xì)節(jié)。
女生每天化妝,假如只需要做發(fā)型,香水,衣服,并要求按照發(fā)型——》香水——》衣服的順序進(jìn)行,用代碼實(shí)現(xiàn)
定義女生抽象類
/** * 女生抽象類 * @author:liyajie * @createTime:2022/2/16 10:20 * @version:1.0 */ public abstract class AbstractWoman { //設(shè)計(jì)發(fā)型 public abstract void buildHairstyle(); //使用香水 public abstract void buildPerfume(); //設(shè)計(jì)衣服 public abstract void buildClothing(); }
定義女生實(shí)現(xiàn)類
/** * 女生實(shí)現(xiàn)類 * @author:liyajie * @createTime:2022/2/16 10:21 * @version:1.0 */ public class Woman extends AbstractWoman { @Override public void buildHairstyle() { System.out.println("馬尾造型"); } @Override public void buildPerfume() { System.out.println("古龍香水"); } @Override public void buildClothing() { System.out.println("海瀾之家"); } }
測(cè)試類
/** * 測(cè)試類 * @author:liyajie * @createTime:2022/2/15 16:35 * @version:1.0 */ public class Test { public static void main(String[] args) { Woman woman = new Woman(); woman.buildHairstyle(); woman.buildPerfume(); woman.buildClothing(); System.out.println(woman); } }
查看測(cè)試結(jié)果
定義女生類
/** * 女生化妝 * @author:liyajie * @createTime:2022/2/15 15:40 * @version:1.0 */ @Data public class WomanNew { // 發(fā)型 private String hairstyle; // 香水 private String perfume; // 服裝 private String clothing; //化完妝后的展示效果 public void show(){ System.out.println("化妝完成"); } }
定義化妝師抽象類
/** * 化妝師抽象類 * @author:liyajie * @createTime:2022/2/15 15:58 * @version:1.0 */ public abstract class AbstractDresserNew { protected Woman woman = new Woman(); //設(shè)計(jì)發(fā)型 public abstract void buildHairstyle(); //使用香水 public abstract void buildPerfume(); //設(shè)計(jì)衣服 public abstract void buildClothing(); public Woman getWoman(){ return woman; } }
定義具體的化妝師類
/** * 具體的化妝師 * @author:liyajie * @createTime:2022/2/15 16:17 * @version:1.0 */ public class DresserNew extends AbstractDresserNew{ @Override public void buildHairstyle() { woman.setHairstyle("馬尾造型"); } @Override public void buildPerfume() { woman.setPerfume("古龍香水"); } @Override public void buildClothing() { woman.setClothing("海瀾之家"); } }
定義化妝總設(shè)計(jì)師類(指揮者)
/** * 化妝總設(shè)計(jì)師(指揮者) * @author:liyajie * @createTime:2022/2/15 16:22 * @version:1.0 */ public class DresserManage { private AbstractDresser abstractDresser; public DresserManage(AbstractDresser abstractDresser){ this.abstractDresser = abstractDresser; } public Woman makeUp(){ abstractDresser.buildHairstyle(); abstractDresser.buildPerfume(); abstractDresser.buildClothing(); return abstractDresser.getWoman(); } }
定義測(cè)試類
/** * 測(cè)試類 * @author:liyajie * @createTime:2022/2/15 16:35 * @version:1.0 */ public class TestNew { public static void main(String[] args) { DresserNew dresser = new DresserNew(); DresserManage dresserManage = new DresserManage(dresser); WomanNew womanNew = dresserManage.makeUp(); System.out.println(womanNew); } }
查看結(jié)果
方案一:普通的實(shí)現(xiàn)方式,采用了繼承抽象類的方式進(jìn)行實(shí)現(xiàn),耦合性非常高,不易擴(kuò)展
方案二:建造者模式,將女生和化妝師化妝進(jìn)行了解耦合,并且易擴(kuò)展,更換化妝師也很方便;并且有一個(gè)化妝總設(shè)計(jì)師作為指揮者的角色,可以方便的控制化妝的順序,符合開閉原則
將產(chǎn)品本身與產(chǎn)品的創(chuàng)建過程解耦合
擴(kuò)展性很高,很方便的增加或者替換具體建造者
方便用程序來控制產(chǎn)品的創(chuàng)建過程以及順序
指揮者類針對(duì)抽象建造者編程,系統(tǒng)擴(kuò)展方便,符合開閉原則
建造者模式創(chuàng)建的產(chǎn)品一般組成部分類似,如果產(chǎn)品差異性非常大,不適合了,合理利用
如果產(chǎn)品內(nèi)部變化復(fù)雜,導(dǎo)致系統(tǒng)非常龐大,權(quán)衡
關(guān)于“Java建造者模式的示例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎ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)容。