摘要:建造者模式一一般實現(xiàn)創(chuàng)建簡單對象創(chuàng)建復雜對象調(diào)用輸出缺點對象耦合度過高,簡單對象,復雜對象都與調(diào)用程序耦合當簡單對象組合的方式發(fā)生變化時,由其組合創(chuàng)建的復雜對象也跟著發(fā)生變化二建造者模式定義將一個復雜的對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)
建造者模式(Builder)
一.一般實現(xiàn) 1.1 創(chuàng)建簡單對象public class SimpleEntity1 { public SimpleEntity1(){ System.out.println("create SimpleEntity1..."); } } public class SimpleEntity2 { public SimpleEntity2(){ System.out.println("create SimpleEntity2..."); } }1.2 創(chuàng)建復雜對象
public class ComplexEntity { public void createComplexEntity(SimpleEntity1 simpleEntity1, SimpleEntity2 simpleEntity2){ System.out.println("createComplexEntity ... with simpleEntity1 AND simpleEntity2 "); } }1.3 調(diào)用
public static void main(String[] args) { SimpleEntity1 s1 = new SimpleEntity1(); SimpleEntity2 s2 = new SimpleEntity2(); ComplexEntity complexEntity = new ComplexEntity(); complexEntity.createComplexEntity(s1, s2); }1.4 輸出
create SimpleEntityA1... create SimpleEntity2... createComplexEntity ... with simpleEntity1 AND simpleEntity21.5 缺點
對象耦合度過高,簡單對象,復雜對象都與調(diào)用程序耦合.
當簡單對象組合的方式發(fā)生變化時,由其組合創(chuàng)建的復雜對象也跟著發(fā)生變化.
二.建造者模式 2.1 定義將一個復雜的對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示.
2.2 適用情況需要生成的對象具有復雜的內(nèi)部結(jié)構(gòu).
需要生成的對象內(nèi)部屬性本身互相依賴.
2.3 角色Builder:創(chuàng)建產(chǎn)品對象的公共接口.
ConcreteBuilder:實現(xiàn)Builder接口并產(chǎn)生具體的簡單對象,以供合成復雜對象.
Director:調(diào)用具體建造者,指導產(chǎn)生過程.
Product:最終產(chǎn)生的復雜產(chǎn)品對象.
三.代碼實現(xiàn) 3.1 復雜產(chǎn)品對象public class ComplexEntity { public ComplexEntity(){ System.out.println("create complexEntity ..."); } public void setSimpleEntityA(ISimpleEntityA a){ System.out.println("complexEntity set simpleEntityA ..."); } public void setSimpleEntityB(ISimpleEntityB b){ System.out.println("complexEntity set simpleEntityB ..."); } }3.2 簡單產(chǎn)品
public interface ISimpleEntityA { } public interface ISimpleEntityB { } public class SimpleEntityA1 implements ISimpleEntityA { public SimpleEntityA1(){ System.out.println("create SimpleEntityA1 ..."); } } public class SimpleEntityB1 implements ISimpleEntityB { public SimpleEntityB1(){ System.out.println("create SimpleEntityB1 ..."); } }3.3 抽象Builder接口
public interface IBuilder { void createSimpleEntityA(); void createSimpleEntityB(); ComplexEntity createComplexEntity(); }3.4 具體建造者對象
public class Builder1 implements IBuilder{ ComplexEntity complexEntity = new ComplexEntity(); @Override public void createSimpleEntityA() { complexEntity.setSimpleEntityA(new SimpleEntityA1()); } @Override public void createSimpleEntityB() { complexEntity.setSimpleEntityB(new SimpleEntityB1()); } @Override public ComplexEntity createComplexEntity() { return complexEntity; } }3.5 指導者對象
public class Director { public ComplexEntity create1(){ IBuilder builder = new Builder1(); builder.createSimpleEntityA(); builder.createSimpleEntityB(); return builder.createComplexEntity(); } }3.6 調(diào)用
public static void main(String[] args) { Director director = new Director(); director.create1(); }3.7 輸出
create complexEntity ... create SimpleEntityA1 ... complexEntity set simpleEntityA ... create SimpleEntityB1 ... complexEntity set simpleEntityB ...3.8 優(yōu)點
易于擴展(新增具體建造者).
易于解耦(產(chǎn)品本身與產(chǎn)品創(chuàng)建過程).
精確控制復雜對象的創(chuàng)建.
3.9 缺點范圍(簡單對象需有共同點).
內(nèi)部變化不能過于復雜(會產(chǎn)生大量具體建造者).
四.源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69401.html
摘要:而建造者模式則是要求按照指定的藍圖建造產(chǎn)品,它的主要目的是通過組裝零配件而產(chǎn)生一個新產(chǎn)品。最后通過一個套餐實例,介紹了建造者模式在實例中的基本使用手段。 歷史文章回顧: 設計模式專欄 深入理解單例模式 深入理解工廠模式 歷史優(yōu)質(zhì)文章推薦: 分布式系統(tǒng)的經(jīng)典基礎理論 可能是最漂亮的Spring事務管理詳解 面試中關于Java虛擬機(jvm)的問題看這篇就夠了 無論是在現(xiàn)實世界中還是在軟件...
摘要:即建造者模式可以強制實行一種分步驟進行的建造過程。指導類負責調(diào)用適當?shù)慕ㄔ煺邅斫M建產(chǎn)品,指導類一般不與產(chǎn)品類發(fā)生依賴關系,與指導類直接交互的是建造者類建造者模式優(yōu)點建造者模式的封裝性很好。 建造者模式 將一個復雜的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。主要解決在軟件系統(tǒng)中,有時候面臨著一個復雜對象的創(chuàng)建工作,由于需求的變化,這個復雜對象的某些部分經(jīng)常面臨著劇烈的變化...
摘要:優(yōu)點建造者模式的封裝性很好,對象本身與構(gòu)建過程解耦。建造者模式很容易進行擴展。適用場景需要生成的對象具有復雜得內(nèi)部結(jié)構(gòu)且內(nèi)部屬性本身相互依賴建造者模式的代碼實現(xiàn)建造者模式主要有個部分產(chǎn)品類建造者類指揮者類客戶。建造者完成相應的部分。 建造者模式 建造者模式(builder pattern)比較簡單,它屬于創(chuàng)建型模式的一種,將一個復雜的對象分解成多個簡單的對象來進行構(gòu)建,將復雜的構(gòu)建層與...
摘要:參考文章設計模式之建造者模式一什么是建造者模式建造者模式是將一個復雜的對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。 參考文章:java設計模式之建造者模式 一、什么是建造者模式建造者模式:是將一個復雜的對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。工廠類模式提供的是創(chuàng)建單個類的模式,而建造者模式則是將各種產(chǎn)品集中起來進行管理,用來創(chuàng)建復合對象,所謂...
摘要:上期原型模式發(fā)布以后,收到了粉絲的感謝,一條創(chuàng)作的動力更足了。今天我們一塊看一下建造者模式,同樣是創(chuàng)建型設計模式。為我們提供了建造者模式的快速實現(xiàn),要應用到實際編碼中。 ...
摘要:在建造者模式比較龐大時,導演類可以有多個。該種場景只能是一個補償方法,因為一個對象不容易獲得,而在設計階段竟然沒有發(fā)覺,而要通過創(chuàng)建者模式柔化創(chuàng)建過程,本身已經(jīng)違反設計的最初目標。源碼地址參考文獻設計模式之禪 定義 Separate the construction of a complex object from its representation so that the same...
閱讀 3308·2021-09-30 09:54
閱讀 3805·2021-09-22 15:01
閱讀 3110·2021-08-27 16:19
閱讀 2578·2019-08-29 18:39
閱讀 2164·2019-08-29 14:09
閱讀 634·2019-08-26 10:23
閱讀 1343·2019-08-23 12:01
閱讀 1873·2019-08-22 13:57