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

23種設(shè)計(jì)模式【創(chuàng)建型模式】詳細(xì)介紹之【建造者模式】

這篇具有很好參考價(jià)值的文章主要介紹了23種設(shè)計(jì)模式【創(chuàng)建型模式】詳細(xì)介紹之【建造者模式】。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

設(shè)計(jì)模式的分類和應(yīng)用場景總結(jié)

可以查看專欄設(shè)計(jì)模式:設(shè)計(jì)模式

建造者模式:構(gòu)建復(fù)雜對象的精妙設(shè)計(jì)

建造者模式是一種創(chuàng)建型設(shè)計(jì)模式,用于構(gòu)建復(fù)雜對象。它將對象的構(gòu)建過程與其表示分離,允許您以可控和可擴(kuò)展的方式構(gòu)建對象。在本文中,我們將深入探討建造者模式,解釋其核心概念,并提供Java示例代碼來演示如何使用建造者模式。

建造者模式的核心思想

建造者模式的核心思想是將一個(gè)復(fù)雜對象的構(gòu)建過程分為多個(gè)步驟,每個(gè)步驟由一個(gè)獨(dú)立的"建造者"對象負(fù)責(zé)完成。最終,這些建造者協(xié)同工作,按順序構(gòu)建出一個(gè)完整的對象。

通過使用建造者模式,您可以在構(gòu)建對象時(shí)靈活地添加、修改或刪除步驟,而不會影響其他部分的代碼。這種分離的方式有助于管理復(fù)雜對象的構(gòu)建,提高可維護(hù)性和可讀性。

建造者模式的參與者

建造者模式包含以下主要參與者:

  1. 產(chǎn)品(Product):要構(gòu)建的復(fù)雜對象。產(chǎn)品通常包含多個(gè)屬性和方法。

  2. 抽象建造者(Builder):定義了構(gòu)建產(chǎn)品各個(gè)部分的接口。每個(gè)部分都有一個(gè)對應(yīng)的建造方法。

  3. 具體建造者(Concrete Builder):實(shí)現(xiàn)了抽象建造者接口,負(fù)責(zé)構(gòu)建產(chǎn)品的各個(gè)部分。每個(gè)具體建造者都可以構(gòu)建出不同類型的產(chǎn)品。

  4. 指揮者(Director):負(fù)責(zé)調(diào)用具體建造者的方法,按照一定的順序構(gòu)建產(chǎn)品。指揮者知道如何構(gòu)建一個(gè)完整的產(chǎn)品。

Java示例:建造者模式

讓我們通過一個(gè)簡單的Java示例來演示建造者模式。我們將構(gòu)建一個(gè)Meal對象,包括主食、飲料和甜點(diǎn)。

// 產(chǎn)品類
class Meal {
    private String mainCourse;
    private String beverage;
    private String dessert;

    public void setMainCourse(String mainCourse) {
        this.mainCourse = mainCourse;
    }

    public void setBeverage(String beverage) {
        this.beverage = beverage;
    }

    public void setDessert(String dessert) {
        this.dessert = dessert;
    }

    public void describe() {
        System.out.println("Main Course: " + mainCourse);
        System.out.println("Beverage: " + beverage);
        System.out.println("Dessert: " + dessert);
    }
}

// 抽象建造者接口
interface MealBuilder {
    void buildMainCourse();
    void buildBeverage();
    void buildDessert();
    Meal getMeal();
}

// 具體建造者實(shí)現(xiàn)
class VegMealBuilder implements MealBuilder {
    private Meal meal = new Meal();

    @Override
    public void buildMainCourse() {
        meal.setMainCourse("Vegetarian Burger");
    }

    @Override
    public void buildBeverage() {
        meal.setBeverage("Water");
    }

    @Override
    public void buildDessert() {
        meal.setDessert("Fruit Salad");
    }

    @Override
    public Meal getMeal() {
        return meal;
    }
}

class NonVegMealBuilder implements MealBuilder {
    private Meal meal = new Meal();

    @Override
    public void buildMainCourse() {
        meal.setMainCourse("Chicken Burger");
    }

    @Override
    public void buildBeverage() {
        meal.setBeverage("Coke");
    }

    @Override
    public void buildDessert() {
        meal.setDessert("Chocolate Cake");
    }

    @Override
    public Meal getMeal() {
        return meal;
    }
}

// 指揮者
class Waiter {
    private MealBuilder mealBuilder;

    public Waiter(MealBuilder mealBuilder) {
        this.mealBuilder = mealBuilder;
    }

    public Meal constructMeal() {
        mealBuilder.buildMainCourse();
        mealBuilder.buildBeverage();
        mealBuilder.buildDessert();
        return mealBuilder.getMeal();
    }
}

public class BuilderPatternExample {
    public static void main(String[] args) {
        MealBuilder vegMealBuilder = new VegMealBuilder();
        MealBuilder nonVegMealBuilder = new NonVegMealBuilder();

        Waiter waiter1 = new Waiter(vegMealBuilder);
        Meal vegMeal = waiter1.constructMeal();
        System.out.println("Veg Meal:");
        vegMeal.describe();

        Waiter waiter2 = new Waiter(nonVegMealBuilder);
        Meal nonVegMeal = waiter2.constructMeal();
        System.out.println("Non-Veg Meal:");
        nonVegMeal.describe();
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè)Meal類作為產(chǎn)品。然后,我們定義了抽象建造者接口MealBuilder,并創(chuàng)建了兩個(gè)具體建造者VegMealBuilderNonVegMealBuilder,它們分別構(gòu)建了不同類型的餐點(diǎn)。最后,我們有一個(gè)Waiter類作為指揮者,它知道如何構(gòu)建不同類型的餐點(diǎn)。

通過建造者模式,我們能夠以可控和可擴(kuò)展的方式構(gòu)建不同類型的餐點(diǎn),而不會使構(gòu)建過程變得混亂。這提供了更好的靈活性和可維護(hù)性,尤其在構(gòu)建復(fù)雜對象時(shí)非常有用。

版權(quán)聲明:
原創(chuàng)博主:牛哄哄的柯南
博主原文鏈接:https://keafmd.blog.csdn.net/
個(gè)人博客鏈接:https://www.keafmd.top/

看完如果對你有幫助,感謝點(diǎn)擊下面的點(diǎn)贊支持!
[哈哈][抱拳]

23種設(shè)計(jì)模式【創(chuàng)建型模式】詳細(xì)介紹之【建造者模式】,設(shè)計(jì)模式,每天進(jìn)步一點(diǎn)點(diǎn),設(shè)計(jì)模式,建造者模式,java
加油!

共同努力!

Keafmd

感謝支持牛哄哄的柯南,期待你的三連+關(guān)注~~

keep accumulate for my dream【共勉】

???????????????????????????????????????????????????????↓ ? ↓ ? ↓ ? ↓ ? ↓ ? ↓ ?文章來源地址http://www.zghlxwxcb.cn/news/detail-719169.html

到了這里,關(guān)于23種設(shè)計(jì)模式【創(chuàng)建型模式】詳細(xì)介紹之【建造者模式】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Gof23設(shè)計(jì)模式之建造者模式

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

    2024年02月11日
    瀏覽(34)
  • 【23種設(shè)計(jì)模式】行為型模式詳細(xì)介紹(下)

    【23種設(shè)計(jì)模式】行為型模式詳細(xì)介紹(下)

    本文為 【23種設(shè)計(jì)模式】行為型模式 相關(guān)內(nèi)容介紹,下邊將對 訪問者模式 , 模板模式 , 策略模式 , 狀態(tài)模式 , 觀察者模式 , 備忘錄模式 , 中介者模式 , 迭代器模式 , 解釋器模式 , 命令模式 , 責(zé)任鏈模式 ,具體包括它們的特點(diǎn)與實(shí)現(xiàn)等進(jìn)行詳盡介紹~ ?? 博主主

    2023年04月22日
    瀏覽(19)
  • 用Rust實(shí)現(xiàn)23種設(shè)計(jì)模式之建造者模式

    當(dāng)使用 Rust 實(shí)現(xiàn)建造者模式時(shí),我們可以通過結(jié)構(gòu)體和方法鏈來實(shí)現(xiàn)。建造者模式是一種創(chuàng)建型設(shè)計(jì)模式,它允許你按照特定的順序構(gòu)建復(fù)雜對象,同時(shí)使你能夠靈活地構(gòu)建不同的變體。下面是一個(gè)使用 Rust 實(shí)現(xiàn)建造者模式的示例, 在示例中,我們首先定義了要構(gòu)建的復(fù)雜對

    2024年02月14日
    瀏覽(26)
  • 設(shè)計(jì)模式之創(chuàng)建型模式---建造者模式

    建造者模式是一種創(chuàng)建型設(shè)計(jì)模式,其核心思想是將一個(gè)復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。該模式將復(fù)雜對象的創(chuàng)建過程拆分成多個(gè)簡單對象的創(chuàng)建過程,并將這些簡單對象組合起來構(gòu)建出復(fù)雜對象。 建造者模式的基本構(gòu)成通常包括

    2024年04月15日
    瀏覽(22)
  • 設(shè)計(jì)模式:創(chuàng)建者模式 - 建造者模式

    設(shè)計(jì)模式:創(chuàng)建者模式 - 建造者模式

    將一個(gè)復(fù)雜對象的構(gòu)建與表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。 分離了部件的構(gòu)造(由Builder來負(fù)責(zé))和裝配(由Director負(fù)責(zé))。 從而可以構(gòu)造出復(fù)雜的對象。這個(gè)模式適用于:某個(gè)對象的構(gòu)建過程復(fù)雜的情況。 由于實(shí)現(xiàn)了構(gòu)建和裝配的解耦。不同的構(gòu)建器,相同的

    2023年04月24日
    瀏覽(28)
  • 設(shè)計(jì)模式-創(chuàng)建型模式之建造者模式

    設(shè)計(jì)模式-創(chuàng)建型模式之建造者模式

    無論是在現(xiàn)實(shí)世界中還是在軟件系統(tǒng)中,都存在一些復(fù)雜的對象,它們擁有多個(gè)組成部分,如汽車,它包括車輪、方向盤、發(fā)送機(jī)等各種部件。而對于大多數(shù)用戶而言,無須知道這些部件的裝配細(xì)節(jié),也幾乎不會使用單獨(dú)某個(gè)部件,而是使用一輛完整的汽車,可以通過建造者

    2023年04月20日
    瀏覽(24)
  • 設(shè)計(jì)模式—?jiǎng)?chuàng)建型模式之建造者模式

    設(shè)計(jì)模式—?jiǎng)?chuàng)建型模式之建造者模式

    如果我們創(chuàng)建的對象比較復(fù)雜,但其細(xì)節(jié)還要暴露給使用者,這樣就需要用到建造者模式。 建造者設(shè)計(jì)模式, 屏蔽過程,而不屏蔽細(xì)節(jié)。 比如我們有一個(gè)手機(jī)類,定義如下: 我們想定制自己的一個(gè)手機(jī),可以先定義一個(gè)抽象的構(gòu)建者; 如果我們想定制一個(gè) 香蕉手機(jī) ,就可

    2024年02月06日
    瀏覽(23)
  • 設(shè)計(jì)模式-創(chuàng)建型模式(單例、工廠、建造、原型)

    設(shè)計(jì)模式:軟件設(shè)計(jì)中普遍存在(反復(fù)出現(xiàn))的各種問題,所提出的解決方案。 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)。 面向?qū)ο笤O(shè)計(jì)的SOLID原則: (1)開放封閉原則:一個(gè)軟件實(shí)體如類、模塊和函數(shù)應(yīng)該對擴(kuò)展開放,對修改關(guān)閉。即軟件實(shí)體應(yīng)盡量在不修改原有代碼的情

    2024年02月08日
    瀏覽(28)
  • 設(shè)計(jì)模式 - 創(chuàng)建型模式考點(diǎn)篇:工廠模式、建造者模式

    設(shè)計(jì)模式 - 創(chuàng)建型模式考點(diǎn)篇:工廠模式、建造者模式

    目錄 一、創(chuàng)建型模式 一句話概括 1.1、工廠模式 1.1.1、簡單工廠模式(非 23 種經(jīng)典設(shè)計(jì)模式) 概述 案例 1.1.2、靜態(tài)工廠(擴(kuò)展) 1.1.3、工廠方法模式 概念 案例 1.2、建造者模式 1.2.1、概念 1.2.2、案例 1.2.3、建造者模式擴(kuò)展:鏈?zhǔn)骄幊痰讓?1.3、工廠方法模式 VS 建造者模式 創(chuàng)

    2024年02月07日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包