国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設計模式——建造者模式(Builder Pattern)

這篇具有很好參考價值的文章主要介紹了設計模式——建造者模式(Builder Pattern)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

概述

?????? 建造者模式是較為復雜的創(chuàng)建型模式,它將客戶端與包含多個組成部分(或部件)的復雜對象的創(chuàng)建過程分離,客戶端無須知道復雜對象的內部組成部分與裝配方式,只需要知道所需建造者的類型即可。它關注如何一步一步創(chuàng)建一個的復雜對象,不同的具體建造者定義了不同的創(chuàng)建過程,且具體建造者相互獨立,增加新的建造者非常方便,無須修改已有代碼,系統(tǒng)具有較好的擴展性。建造者模式定義如下:建造者模式(Builder Pattern):將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創(chuàng)建不同的表示。建造者模式是一種對象創(chuàng)建型模式。

????? 建造者模式一步一步創(chuàng)建一個復雜的對象,它允許用戶只通過指定復雜對象的類型和內容就可以構建它們,用戶不需要知道內部的具體構建細節(jié)。建造者模式結構如圖所示:

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

在建造者模式結構圖中包含如下幾個角色:

● Builder(抽象建造者):它為創(chuàng)建一個產品Product對象的各個部件指定抽象接口,在該接口中一般聲明兩類方法,一類方法是buildPartX(),它們用于創(chuàng)建復雜對象的各個部件;另一類方法是getResult(),它們用于返回復雜對象。Builder既可以是抽象類,也可以是接口。

●ConcreteBuilder(具體建造者):它實現(xiàn)了Builder接口,實現(xiàn)各個部件的具體構造和裝配方法,定義并明確它所創(chuàng)建的復雜對象,也可以提供一個方法返回創(chuàng)建好的復雜產品對象。

●Product(產品角色):它是被構建的復雜對象,包含多個組成部件,具體建造者創(chuàng)建該產品的內部表示并定義它的裝配過程。

● Director(指揮者):指揮者又稱為導演類,它負責安排復雜對象的建造次序,指揮者與抽象建造者之間存在關聯(lián)關系,可以在其construct()建造方法中調用建造者對象的部件構造與裝配方法,完成復雜對象的建造??蛻舳艘话阒恍枰c指揮者進行交互,在客戶端確定具體建造者的類型,并實例化具體建造者對象(也可以通過配置文件和反射機制),然后通過指揮者類的構造函數(shù)或者Setter方法將該對象傳入指揮者類中。

簡單實現(xiàn)
常規(guī)實現(xiàn)

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

編寫測試代碼并運行:

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

?????? 上面示例是建造者模式的常規(guī)用法,指揮者類ComputerDirector在建造者模式中具有很重要的作用,它用于指導具體構建者如何構建產品,控制調用先后次序,并向調用者返回完整的產品類,但是有些情況下需要簡化系統(tǒng)結構,可以把指揮者類和抽象建造者進行結合,于是就有了下面的簡化寫法。

簡化實現(xiàn)

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

編寫測試代碼并運行:

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

?????? 可以看到,對比常規(guī)寫法,這樣寫確實簡化了系統(tǒng)結構,但同時也加重了建造者類的職責,也不是太符合單一職責原則,如果construct() 過于復雜,建議還是封裝到 Director 中。

鏈式實現(xiàn)

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

?????? 可以看到,其實鏈式寫法與普通寫法的區(qū)別并不大,只是在建造者類組裝部件的時候,同時將建造者類返回即可,使用鏈式寫法使用起來更方便,某種程度上也可以提高開發(fā)效率。從軟件設計上,對程序員的要求比較高。比較常見的mybatis-plus中的條件構造器就是使用的這種鏈式寫法。

鉤子方法

?????? 建造者模式除了逐步構建一個復雜產品對象外,還可以通過Director類來更加精細地控制產品的創(chuàng)建過程,例如增加一類稱之為鉤子方法(HookMethod)的特殊方法來控制是否對某個buildPartX()的調用。

?????? 鉤子方法的返回類型通常為boolean類型,方法名一般為isXXX(),鉤子方法定義在抽象建造者類中。例如我們可以在組裝電腦的的抽象建造者類ComputerBuilder中定義一個方法isGpu(),用于判斷某個電腦是否需要組裝Gpu,在ComputerBuilder為之提供一個默認實現(xiàn),其返回值為false,代碼如下所示:

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

?????? 如果某個電腦無需組裝Gpu,則對應的具體建造者將覆蓋isGpu()方法,并設置值為true,代碼如下:

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

?????? 此時。指揮者類ComputerDirector代碼修改如下:

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

運行如下:

設計模式——建造者模式(Builder Pattern),設計模式,設計模式,建造者模式

?????? 上圖可以看出,Gpu是null,沒有組裝上去,通過引入鉤子方法,我們可以在Director中對復雜產品的構建進行精細的控制,不僅指定buildPartX()方法的執(zhí)行順序,還可以控制是否需要執(zhí)行某個buildPartX()方法。

總結

?????? 建造者模式與抽象工廠模式有點相似,但是建造者模式返回一個完整的復雜產品,而抽象工廠模式返回一系列相關的產品;在抽象工廠模式中,客戶端通過選擇具體工廠來生成所需對象,而在建造者模式中,客戶端通過指定具體建造者類型并指導Director類如何去生成對象,側重于一步步構造一個復雜對象,然后將結果返回。如果將抽象工廠模式看成一個汽車配件生產廠,生成不同類型的汽車配件,那么建造者模式就是一個汽車組裝廠,通過對配件進行組裝返回一輛完整的汽車。建造者模式的核心在于如何一步步構建一個包含多個組成部件的完整對象,使用相同的構建過程構建不同的產品,在軟件開發(fā)中,如果我們需要創(chuàng)建復雜對象并希望系統(tǒng)具備很好的靈活性和可擴展性可以考慮使用建造者模式。

1.主要優(yōu)點

建造者模式的主要優(yōu)點如下:

(1) 在建造者模式中,客戶端不必知道產品內部組成的細節(jié),將產品本身與產品的創(chuàng)建過程解耦,使得相同的創(chuàng)建過程可以創(chuàng)建不同的產品對象。

(2) 每一個具體建造者都相對獨立,而與其他的具體建造者無關,因此可以很方便地替換具體建造者或增加新的具體建造者,用戶使用不同的具體建造者即可得到不同的產品對象。由于指揮者類針對抽象建造者編程,增加新的具體建造者無須修改原有類庫的代碼,系統(tǒng)擴展方便,符合“開閉原則”

(3) 可以更加精細地控制產品的創(chuàng)建過程。將復雜產品的創(chuàng)建步驟分解在不同的方法中,使得創(chuàng)建過程更加清晰,也更方便使用程序來控制創(chuàng)建過程。

2.主要缺點

建造者模式的主要缺點如下:

(1) 建造者模式所創(chuàng)建的產品一般具有較多的共同點,其組成部分相似,如果產品之間的差異性很大,例如很多組成部分都不相同,不適合使用建造者模式,因此其使用范圍受到一定的限制。

(2) 如果產品的內部變化復雜,可能會導致需要定義很多具體建造者類來實現(xiàn)這種變化,導致系統(tǒng)變得很龐大,增加系統(tǒng)的理解難度和運行成本。

3.適用場景

在以下情況下可以考慮使用建造者模式:

(1) 需要生成的產品對象有復雜的內部結構,這些產品對象通常包含多個成員屬性。

(2) 需要生成的產品對象的屬性相互依賴,需要指定其生成順序。

(3) 對象的創(chuàng)建過程獨立于創(chuàng)建該對象的類。在建造者模式中通過引入了指揮者類,將創(chuàng)建過程封裝在指揮者類中,而不在建造者類和客戶類中。

(4) 隔離復雜對象的創(chuàng)建和使用,并使得相同的創(chuàng)建過程可以創(chuàng)建不同的產品。文章來源地址http://www.zghlxwxcb.cn/news/detail-808514.html

到了這里,關于設計模式——建造者模式(Builder Pattern)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • (一)創(chuàng)建型設計模式:3、建造者模式(Builder Pattern)

    (一)創(chuàng)建型設計模式:3、建造者模式(Builder Pattern)

    目錄 1、建造者模式含義 2、建造者模式的講解 3、使用C++實現(xiàn)建造者模式的實例 4、建造者模式的優(yōu)缺點 5、建造者模式VS工廠模式 1、建造者模式含義 The intent of the Builder design pattern is to separate the construction of a complex object from its representation. By doing so the same construction process ca

    2024年02月13日
    瀏覽(16)
  • 【Java設計模式】建造者模式 & 注解@Builder

    【Java設計模式】建造者模式 & 注解@Builder

    將一個復雜對象的構造與它的表示分離 ,使同樣的構建過程可以創(chuàng)建不同的表示。它使將一個復雜的對象分解成多個簡單的對象,然后一步步構建而成。 每一個具體建造者都相對獨立,而與其它的具體建造者無關,因此可以很方便地替換具體建造者或增加新的具體建造者,

    2024年02月14日
    瀏覽(18)
  • 【設計模式】23種設計模式——建造者模式Builder(原理講解+應用場景介紹+案例介紹+Java代碼實現(xiàn))

    【設計模式】23種設計模式——建造者模式Builder(原理講解+應用場景介紹+案例介紹+Java代碼實現(xiàn))

    建造者模式又叫生成器模式,是一種對象構建模式。它可以將復雜對象的建造過程抽象出來(抽象類別),使這個抽象過程的不同實現(xiàn)方法可以構造出不同屬性的對象 建造者模式是一步一步創(chuàng)建一個復雜的對象,它允許用戶只通過指定復雜對象的類型和內容就可以構建它們,不

    2024年02月16日
    瀏覽(25)
  • 建造者模式(Builder Pattern)

    建造者模式(Builder Pattern)

    建造者模式(Builder Pattern)是最復雜的創(chuàng)建型模式,它 用于創(chuàng)建一個包含多個組成部分的復雜對象 ,可以返回一個完整的產品對象給用戶。它通過將 客戶端與包含多個組成部分的復雜對象的創(chuàng)建過程分離 ,使得 客戶端無需知道復雜對象的內部組成部分與裝配方式,只需要

    2024年02月03日
    瀏覽(24)
  • 建造者模式-Builder Pattern

    建造者模式-Builder Pattern

    原文地址:https://jaune162.blog/design-pattern/builder-pattern/ 現(xiàn)在一般大型的業(yè)務系統(tǒng)中的消息通知的形式都會有多種,比如短信、站內信、釘釘通知、郵箱等形式。雖然信息內容相同,但是展現(xiàn)形式缺不同。如短信使用的是純文本的形式,釘釘使用的一般是Markdown的形式,而郵箱則

    2024年02月20日
    瀏覽(33)
  • 【設計模式——學習筆記】23種設計模式——建造者模式Builder(原理講解+應用場景介紹+案例介紹+Java代碼實現(xiàn))

    【設計模式——學習筆記】23種設計模式——建造者模式Builder(原理講解+應用場景介紹+案例介紹+Java代碼實現(xiàn))

    建造者模式又叫生成器模式,是一種對象構建模式。它可以將復雜對象的建造過程抽象出來(抽象類別),使這個抽象過程的不同實現(xiàn)方法可以構造出不同屬性的對象 建造者模式是一步一步創(chuàng)建一個復雜的對象,它允許用戶只通過指定復雜對象的類型和內容就可以構建它們,不

    2024年02月15日
    瀏覽(26)
  • 生成器設計模式(Builder Design Pattern)[論點:概念、圖示、示例、框架中的應用、場景]

    生成器設計模式(Builder Design Pattern)[論點:概念、圖示、示例、框架中的應用、場景]

    ??????? 生成器設計模式(Builder Design Pattern)是一種創(chuàng)建型設計模式,用于處理具有多個屬性和復雜構造過程的對象。生成器模式通過將對象的構建過程與其表示分離,使得相同的構建過程可以創(chuàng)建不同的表示。這有助于減少構造函數(shù)的參數(shù)個數(shù),提高代碼的可讀性和可維

    2023年04月11日
    瀏覽(25)
  • 設計模式-構建者(Builder)模式詳解

    在創(chuàng)建一個對象的時候,你是否是醬紫寫: 上面的寫法雖然效率高,但也有一些不足,對于代碼后期維護和協(xié)同開發(fā)會是一件很痛苦的事情。 再看看別人是醬紫寫的: ?是不是很優(yōu)雅,而且在很多框架中也能看到這樣寫的身影。沒錯這就是接下來要講的構建者模式,這樣好處

    2024年02月11日
    瀏覽(20)
  • 設計模式-建造者模式

    設計模式-建造者模式

    在前面幾篇文章中,已經講解了單例模式、工廠方法模式、抽象工廠模式,創(chuàng)建型還剩下一個比較重要的模式-建造者模式。在理解該模式之前,我還是希望重申設計模式的初衷,即 為解決一些問題而提供的優(yōu)良方案 。學習設計模式遺忘其初衷,注定無法理解其真正的深刻內

    2024年02月15日
    瀏覽(23)
  • 設計模式——建造者模式

    建造者模式(Builder Pattern)是一種創(chuàng)建型設計模式,它允許通過分步驟來構建復雜對象。該模式的核心原理是將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創(chuàng)建不同的表現(xiàn)形式。 在建造者模式中,通常有以下角色: 抽象建造者(Builder): 定義了創(chuàng)建產品

    2024年01月16日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包