摘要:建造者模式一一般實現創建簡單對象創建復雜對象調用輸出缺點對象耦合度過高,簡單對象,復雜對象都與調用程序耦合當簡單對象組合的方式發生變化時,由其組合創建的復雜對象也跟著發生變化二建造者模式定義將一個復雜的對象的構建與它的表示分離,使得同樣的構
建造者模式(Builder)
一.一般實現 1.1 創建簡單對象public class SimpleEntity1 { public SimpleEntity1(){ System.out.println("create SimpleEntity1..."); } } public class SimpleEntity2 { public SimpleEntity2(){ System.out.println("create SimpleEntity2..."); } }1.2 創建復雜對象
public class ComplexEntity { public void createComplexEntity(SimpleEntity1 simpleEntity1, SimpleEntity2 simpleEntity2){ System.out.println("createComplexEntity ... with simpleEntity1 AND simpleEntity2 "); } }1.3 調用
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 缺點
對象耦合度過高,簡單對象,復雜對象都與調用程序耦合.
當簡單對象組合的方式發生變化時,由其組合創建的復雜對象也跟著發生變化.
二.建造者模式 2.1 定義將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示.
2.2 適用情況需要生成的對象具有復雜的內部結構.
需要生成的對象內部屬性本身互相依賴.
2.3 角色Builder:創建產品對象的公共接口.
ConcreteBuilder:實現Builder接口并產生具體的簡單對象,以供合成復雜對象.
Director:調用具體建造者,指導產生過程.
Product:最終產生的復雜產品對象.
三.代碼實現 3.1 復雜產品對象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 簡單產品
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 調用
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 優點
易于擴展(新增具體建造者).
易于解耦(產品本身與產品創建過程).
精確控制復雜對象的創建.
3.9 缺點范圍(簡單對象需有共同點).
內部變化不能過于復雜(會產生大量具體建造者).
四.源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69401.html
摘要:而建造者模式則是要求按照指定的藍圖建造產品,它的主要目的是通過組裝零配件而產生一個新產品。最后通過一個套餐實例,介紹了建造者模式在實例中的基本使用手段。 歷史文章回顧: 設計模式專欄 深入理解單例模式 深入理解工廠模式 歷史優質文章推薦: 分布式系統的經典基礎理論 可能是最漂亮的Spring事務管理詳解 面試中關于Java虛擬機(jvm)的問題看這篇就夠了 無論是在現實世界中還是在軟件...
摘要:即建造者模式可以強制實行一種分步驟進行的建造過程。指導類負責調用適當的建造者來組建產品,指導類一般不與產品類發生依賴關系,與指導類直接交互的是建造者類建造者模式優點建造者模式的封裝性很好。 建造者模式 將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。主要解決在軟件系統中,有時候面臨著一個復雜對象的創建工作,由于需求的變化,這個復雜對象的某些部分經常面臨著劇烈的變化...
摘要:優點建造者模式的封裝性很好,對象本身與構建過程解耦。建造者模式很容易進行擴展。適用場景需要生成的對象具有復雜得內部結構且內部屬性本身相互依賴建造者模式的代碼實現建造者模式主要有個部分產品類建造者類指揮者類客戶。建造者完成相應的部分。 建造者模式 建造者模式(builder pattern)比較簡單,它屬于創建型模式的一種,將一個復雜的對象分解成多個簡單的對象來進行構建,將復雜的構建層與...
摘要:參考文章設計模式之建造者模式一什么是建造者模式建造者模式是將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 參考文章:java設計模式之建造者模式 一、什么是建造者模式建造者模式:是將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。工廠類模式提供的是創建單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來創建復合對象,所謂...
摘要:上期原型模式發布以后,收到了粉絲的感謝,一條創作的動力更足了。今天我們一塊看一下建造者模式,同樣是創建型設計模式。為我們提供了建造者模式的快速實現,要應用到實際編碼中。 ...
摘要:在建造者模式比較龐大時,導演類可以有多個。該種場景只能是一個補償方法,因為一個對象不容易獲得,而在設計階段竟然沒有發覺,而要通過創建者模式柔化創建過程,本身已經違反設計的最初目標。源碼地址參考文獻設計模式之禪 定義 Separate the construction of a complex object from its representation so that the same...
閱讀 3306·2021-09-30 09:54
閱讀 3801·2021-09-22 15:01
閱讀 3109·2021-08-27 16:19
閱讀 2577·2019-08-29 18:39
閱讀 2162·2019-08-29 14:09
閱讀 632·2019-08-26 10:23
閱讀 1340·2019-08-23 12:01
閱讀 1869·2019-08-22 13:57