您好,登錄后才能下訂單哦!
這篇文章主要介紹java怎么實現建造者模式,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
一、什么是建筑者模式?
??建造者模式(Builder Pattern)使用多個簡單的對象一步一步構建一個復雜的對象。
??一個 Builder 類會一步一步構造最終的對象,該 Builder 類獨立于其他對象。
??建造者模式主要解決在軟件系統中,有時候面臨著"一個復雜對象"的創建工作,其通常由各個部分的子對象用一定的算法構成;由于需求的變化,這個復雜對象的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的算法卻相對穩定。
二、建造者模式的具體實現
結構圖
建造者模式中的四個角色:
1、Builder:給出一個抽象接口,以規范產品對象的各個組成成分的建造。這個接口規定要實現復雜對象的哪些部分的創建,并不涉及具體的對象部件的創建。
2、ConcreteBuilder:實現Builder接口,針對不同的商業邏輯,具體化復雜對象的各部分的創建。 在建造過程完成后,提供產品的實例。
3、Director:調用具體建造者來創建復雜對象的各個部分,在指導者中不涉及具體產品的信息,只負責保證對象各部分完整創建或按某種順序創建。
4、Product:要創建的復雜對象。
java代碼實現
1、創建人類實體類
package com.designpattern.builderPattern; /** * 對象 人 * * @author zhongtao on 2018/9/17 */ public class Human { private String head; private String body; private String hand; private String foot; public String getHead() { return head; } public void setHead(String head) { this.head = head; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getHand() { return hand; } public void setHand(String hand) { this.hand = hand; } public String getFoot() { return foot; } public void setFoot(String foot) { this.foot = foot; } }
2、創建造人的 Builder 接口
package com.designpattern.builderPattern; /** * 造人接口 規定造人的規范 需要頭、身體、手、腳 * * @author zhongtao on 2018/9/17 */ public interface BuilderHuman { void buildHead(); void buildBody(); void buildHand(); void buildFoot(); /** * 返回創建的對象 */ Human createHuman(); }
3、ConcreteBuilder 創建不同類型的人
tallPerson
package com.designpattern.builderPattern; /** * 高個子的人 * * @author zhongtao on 2018/9/17 */ public class TallPersonBuilder implements BuilderHuman { Human human; public TallPersonBuilder() { human = new Human(); } @Override public void buildHead() { human.setHead("普通的頭腦"); } @Override public void buildBody() { human.setBody("壯實,高大的身體"); } @Override public void buildHand() { human.setHand("長手"); } @Override public void buildFoot() { human.setFoot("長腳"); } @Override public Human createHuman() { return human; } }
smartHuman
package com.designpattern.builderPattern; /** * 聰明的人 * * @author zhongtao on 2018/9/17 */ public class SmartHumanBuilder implements BuilderHuman { Human human; public SmartHumanBuilder() { human = new Human(); } @Override public void buildHead() { human.setHead("高智商的頭腦"); } @Override public void buildBody() { human.setBody("健康的身體"); } @Override public void buildHand() { human.setHand("普通的手"); } @Override public void buildFoot() { human.setFoot("普通的腳"); } @Override public Human createHuman() { return human; } }
4、Director 建造者模式的核心 調用具體建造者來創建不同的人
package com.designpattern.builderPattern; /** * 管理造人的順序 BuilderHuman不同,則創建的人不同 * @author zhongtao on 2018/9/17 */ public class HumanDirector { public Human createHumanByDirector(BuilderHuman builderHuman){ builderHuman.buildHead(); builderHuman.buildBody(); builderHuman.buildHand(); builderHuman.buildFoot(); return builderHuman.createHuman(); } }
5、建造者模式測試
package com.designpattern.builderPattern; import org.junit.Test; /** * 測試 * * @author zhongtao on 2018/9/17 */ public class BuilderPatternTest { /** * 測試建造者模式 */ @Test public void test() { HumanDirector humanDirector = new HumanDirector(); //創建高個子的人 Human humanByDirector = humanDirector.createHumanByDirector(new TallPersonBuilder()); System.out.println(humanByDirector.getHead()); System.out.println(humanByDirector.getBody()); System.out.println(humanByDirector.getHand()); System.out.println(humanByDirector.getFoot()); System.out.println("------簡單的分割線------"); //創建聰明的人 Human smartHuman = humanDirector.createHumanByDirector(new SmartHumanBuilder()); System.out.println(smartHuman.getHead()); System.out.println(smartHuman.getBody()); System.out.println(smartHuman.getHand()); System.out.println(smartHuman.getFoot()); } }
三、建造者模式的優缺點
優點:
建造者獨立,易擴展。
便于控制細節風險。
缺點:
產品必須有共同點,范圍有限制。
如內部變化復雜,會有很多的建造類。
注意事項:
與工廠模式的區別,建造者模式更加關注與零件裝配的順序。
以上是“java怎么實現建造者模式”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。