首頁 Java java教程 設計模式之創建者模式詳解

設計模式之創建者模式詳解

Jun 23, 2017 am 09:34 AM
模式 設計模式

定義(From百度百科):
       其核心思想是將一個「複雜物件的建構演算法」與它的「元件及組裝方式」分離,使得構件演算法與組裝方式可以獨立因應變化;
       重複使用相同的建構演算法可以創造不同的表示,不同的建構過程可以重複使用相同的元件組裝方式

UML類別圖

       

特定程式碼:

public class Client {public static void main(String[] args) {
        Director d = new Director(new ConcreteBuilder());
        d.construct();
    }
}public class Director {
    Builder builder;

    Director(Builder builder){this.builder = builder;
    }void construct(){
        builder.buildPart();
    }
}public class ConcreteBuilder implements Builder {private Product product;public Product getResult() {return product;
    }

    @Overridepublic void buildPart() {

    }
}public class Product {

}
登入後複製

舉例:








一輛車是由很多部件組成的,有大到發動機,小到後視鏡等等部分組成,如果說組裝一個汽車交給用戶那顯然是不現實的,

畢竟用戶想要的只是一個汽車,你怎麼造,他不關心。

比如說我想要個奧迪,那說到上面的例子,我就告訴Director,我要建構個奧迪。
那Director找到奧迪對應的Builder接口(ConcreteBuilder實例), ConcreteBuilder知道造奧迪的各個部分和步驟,
比如先造個大架子,在選個發動機,在選個合適的輪胎,最後按個後視鏡,這些步驟就是buildPart的過程,總之很複雜過程,
但對使用者來說就是奧迪,才不關心這些複雜的過程。
還有說一下這個例子看起來跟抽象工廠很像,但是有一個重要的區別,工廠只負責生產出這個車的各個部件,並不負責組裝。
這是區分兩種模式很重要的部分。

各部分組成:

Builder:給出一個抽象接口,以規範產品物件的各個組成成分的建造。這個介面規定要實現複雜物件的哪些部分的創建,並不涉及具體的物件部件的創建。
對應上面的例子就是造車的各部份架子引擎等等的組成。
ConcreteBuilder:實作Builder接口,針對不同的商業邏輯,具體化複雜物件的各部分的創建。 在建造過程完成後,提供產品的實例。
對應上面的就是組裝奧迪的Builder,一步步加上發農機輪子...
Director:調用具體建造者來創建複雜對象的各個部分,在指導者中不涉及具體產品的信息,只負責確保物件各部分完整創建或以某種順序創建。
Director這個字的意思是導演,職責也很明確就是調度。上面的例子我如果作為出品人想法是要奧迪,導演通知ConcreteBuilder去做。
Product:要建立的複雜物件。
對應上面的就是奧迪。

優缺點:

優點:###        鬆散耦合:將複雜產品的創建步驟分解在不同的方法中,使得創建過程更加清晰,使得我們能夠更精確的控制複雜物件的產生過程。 ###        更好的多工性:建構產品和組裝拆分,使得建構產品可以重複使用。 ######缺點:###        建造者模式所創造的產品一般具有較多的共同點,其組成部分相似,如果產品之間的差異性很大,則不適合使用建造者模式,因此其使用範圍受到一定的限制。 ###        如果產品的內部變化複雜,可能會導致需要定義許多特定建造者類別來實現這種變化,導致系統變得龐大。 ######參考:###  ######

以上是設計模式之創建者模式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門工具標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java框架中設計模式與架構模式的區別 Java框架中設計模式與架構模式的區別 Jun 02, 2024 pm 12:59 PM

Java框架中設計模式與架構模式的區別

Java設計模式之適配器模式的妙用 Java設計模式之適配器模式的妙用 May 09, 2024 pm 12:54 PM

Java設計模式之適配器模式的妙用

Java設計模式之裝飾器模式剖析 Java設計模式之裝飾器模式剖析 May 09, 2024 pm 03:12 PM

Java設計模式之裝飾器模式剖析

PHP 設計模式實戰案例解析 PHP 設計模式實戰案例解析 May 08, 2024 am 08:09 AM

PHP 設計模式實戰案例解析

java框架中使用設計模式的優缺點有哪些? java框架中使用設計模式的優缺點有哪些? Jun 01, 2024 pm 02:13 PM

java框架中使用設計模式的優缺點有哪些?

PHP設計模式:測試驅動開發實踐 PHP設計模式:測試驅動開發實踐 Jun 03, 2024 pm 02:14 PM

PHP設計模式:測試驅動開發實踐

Guice框架中設計模式的應用 Guice框架中設計模式的應用 Jun 02, 2024 pm 10:49 PM

Guice框架中設計模式的應用

設計模式如何應對程式碼維護難題 設計模式如何應對程式碼維護難題 May 09, 2024 pm 12:45 PM

設計模式如何應對程式碼維護難題

See all articles