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

Java設(shè)計模式之建造者模式詳解(Builder Pattern)

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

在日常的開發(fā)工作中,我們常常需要創(chuàng)建一些復(fù)雜的對象。這些對象可能包含許多不同的屬性,并且這些屬性的初始化過程可能相當復(fù)雜。在這種情況下,建造者模式是一種非常有用的設(shè)計模式,因為它允許我們分步驟地創(chuàng)建復(fù)雜的對象。

概念和原理:

建造者模式(Builder Pattern)是一種創(chuàng)建型設(shè)計模式,它用于構(gòu)建復(fù)雜的對象。這種模式通常用于構(gòu)建具有許多屬性的對象,并且允許用戶通過使用一組流暢的API逐個設(shè)置這些屬性,而不是通過使用大量的構(gòu)造函數(shù)參數(shù)去設(shè)置。

它的工作原理就是將復(fù)雜對象的構(gòu)建與其表示分離。這說明我們可以使用一個建造者對象來創(chuàng)建和配置一個復(fù)雜的對象,而不需要了解這個復(fù)雜對象的內(nèi)部工作原理。這樣可以使代碼更加靈活,更容易維護和擴展。

一、代碼示例

1.1 普通使用

我們先定義一個“手機”類,這個對象有許多屬性,比如品牌、內(nèi)存、價格等… 并且每個屬性對對象的構(gòu)建過程都有特定的要求。我們可以使用建造者模式來逐步構(gòu)建和配置這個對象。

public class Phone {
    // 品牌
    private String brand;
    // 內(nèi)存
    private String memory;
    // 價格
    private int price;

    private Phone(Builder builder) {
        this.brand= builder.brand;
        this.memory = builder.memory;
        this.price= builder.price;
    }

    public static class Builder {
        private String brand;
    	private String memory;
    	private int price;

        public Builder setBrand(String brand) {
            this.brand= brand;
            return this; // 返回當前對象,以便進行鏈式調(diào)用
        }
        
		public Builder setMemory(String memory) {
            if (memory!= null && !memory.isEmpty()) { // 驗證memory是否有效
                this.memory= memory;
            } else {
                throw new IllegalArgumentException("Invalid memory specification");
            }
            return this;
        }

        public Builder setPrice(int price) {
            if (price> 0) { // 驗證price是否有效
                this.price= price;
            } else {
                throw new IllegalArgumentException("price must be greater than 0");
            }
            return this;
        }
        
        public Phone build() {
            return new Phone(this);
        }
    }

    // 省略getter和setter方法...
}

現(xiàn)在,我們可以使用建造者模式來創(chuàng)建“手機”對象:

Phone phone = new Phone.Builder()  
                        .setBrand("小米")  
                        .setMemory("512G")  
                        .setPrice(2999)  
                        .build();

這樣,我們就可以通過鏈式調(diào)用的方式逐步設(shè)置和構(gòu)建“電腦”對象,并驗證每個屬性的有效性。此外,通過將構(gòu)建過程封裝在建造者類中,我們可以更加靈活地改變對象的創(chuàng)建過程,而不需要去修改表示的代碼。

1.2 使用lombok

這就不得不請出我們java開發(fā)的必備神器了哈哈,Lombok是一個Java庫,它可以通過注解自動創(chuàng)建getter、setter、equals、hashCode和toString方法,從而減少模板代碼的數(shù)量。Lombok也可以與建造者模式可以一起使用,以進一步簡化代碼:

import lombok.Builder;  
import lombok.Data;  
  
@Data  
@Builder  
public class Phone {
    private String brand;
    private String memory;
    private int price;
}

我們使用了Lombok的@Data注解來自動生成getter、setter等方法。@Builder注解告訴Lombok生成一個建造者類,該類具有與Phone類相同的屬性,并提供鏈式調(diào)用的方法來設(shè)置這些屬性。

然后我們可以和前面一樣創(chuàng)建“手機”對象:

Phone phone = new Phone.Builder()  
                        .setBrand("蘋果")  
                        .setMemory("512G")  
                        .setPrice(8999)  
                        .build();

因為@Builder注解會自動為Phone類生成一個名為PhoneBuilder的靜態(tài)內(nèi)部類,該類具有與原始類相同的屬性,并且每個屬性都有一個返回此構(gòu)建器的方法。所以這使得我們可以使用鏈式調(diào)用方式來設(shè)置屬性并構(gòu)建對象。

二、使用建造者模式的好處

  • 鏈式調(diào)用: 建造者模式允許我們通過鏈式調(diào)用的方式來設(shè)置對象的屬性,這使得代碼更加清晰和易于閱讀。
  • 易于維護: 如果對象具有很多屬性,并且這些屬性的初始化過程很復(fù)雜,那么使用建造者模式可以使得代碼更加模塊化,更容易理解和維護。
  • 分離對象構(gòu)造和表示: 建造者模式將對象的構(gòu)造和表示分離開來,使得我們可以靈活地改變對象的創(chuàng)建過程,而不需要去修改表示的代碼。

三、使用注意事項

  • 對于簡單的對象,使用建造者模式可能會過度復(fù)雜化代碼,所以在決定是否使用建造者模式時,需要權(quán)衡利弊。
  • 需要注意避免在建造者模式中產(chǎn)生不必要的代碼重復(fù)。比如,如果不同的方法需要使用相同的屬性,那么應(yīng)該避免在每個方法中都重復(fù)創(chuàng)建相同的屬性。

四、總結(jié)

建造者模式是一種非常有用的設(shè)計模式,尤其適用于創(chuàng)建具有很多屬性的復(fù)雜對象。通過鏈式調(diào)用的方式來設(shè)置對象的屬性,使得代碼更加清晰和易于閱讀。同時,將對象的構(gòu)造和表示分離開來,使得我們可以靈活地改變對象的創(chuàng)建過程。然而,對于簡單的對象,使用建造者模式可能會過度復(fù)雜化代碼,因此在使用時需要權(quán)衡利弊??偟膩碚f,掌握好建造者模式,可以讓我們的代碼更加清晰、易于維護和理解,快使用起來吧 ~文章來源地址http://www.zghlxwxcb.cn/news/detail-702227.html

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

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

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

    (一)創(chuàng)建型設(shè)計模式: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設(shè)計模式】建造者模式 & 注解@Builder

    【Java設(shè)計模式】建造者模式 & 注解@Builder

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

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

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

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

    2024年02月16日
    瀏覽(25)
  • 【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——建造者模式Builder(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

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

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

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

    建造者模式(Builder Pattern)

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

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

    建造者模式-Builder Pattern

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

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

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

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

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

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

    2024年02月11日
    瀏覽(21)
  • 【設(shè)計模式】builder 創(chuàng)建者設(shè)計模式詳解(包含電商應(yīng)用場景及代碼示例)

    在常見的設(shè)計模式中,“Builder” 通常是指一種設(shè)計模式,而不是具體的類或方法。Builder 模式是一種創(chuàng)建型設(shè)計模式,其目的是通過提供一個獨立的構(gòu)建器類來構(gòu)建一個復(fù)雜對象。 建造者模式 (Builder Pattern) 是一種創(chuàng)建型設(shè)計模式,它的主要目標是為了將一個復(fù)雜對象的構(gòu)

    2024年01月21日
    瀏覽(22)
  • Java設(shè)計模式-建造者模式

    建造者模式是一種創(chuàng)建型設(shè)計模式,用于將復(fù)雜對象的構(gòu)建過程與其表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。建造者模式通過將復(fù)雜對象的構(gòu)建過程分解為多個簡單的步驟來實現(xiàn)。 與其他創(chuàng)建型模式不同,建造者模式強調(diào)的是將構(gòu)建過程與表示分離,而不是將對

    2024年02月02日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包