摘要:建造者模式建造者模式使用多個簡單的對象一步一步構(gòu)建成一個復(fù)雜的對象。建造者實用范圍當(dāng)創(chuàng)建復(fù)雜對象的算法應(yīng)該獨立于該對象的組成部分以及它們的裝配方式時。參考建造者創(chuàng)建型設(shè)計模式之模式
建造者模式
建造者模式(Builder Pattern)使用多個簡單的對象一步一步構(gòu)建成一個復(fù)雜的對象。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。建造者實用范圍
一個 Builder 類會一步一步構(gòu)造最終的對象。該 Builder 類是獨立于其他對象的。
當(dāng)創(chuàng)建復(fù)雜對象的算法應(yīng)該獨立于該對象的組成部分以及它們的裝配方式時。建造者主要解決
當(dāng)構(gòu)造過程必須允許被構(gòu)造的對象有不同表示時。
主要解決在軟件系統(tǒng)中,有時候面臨著"一個復(fù)雜對象"的創(chuàng)建工作,其通常由各個部分的子對象用一定的算法構(gòu)成;由于需求的變化,這個復(fù)雜對象的各個部分經(jīng)常面臨著劇烈的變化,但是將它們組合在一起的算法卻相對穩(wěn)定定義
將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
使用場景通過上面的定義我們大概已經(jīng)知道創(chuàng)建模式它是要做什么了
相同的方法,不同的執(zhí)行順序,產(chǎn)生不同的事件結(jié)果時
多個部件或零件,都可以裝配到一個對象中,但是產(chǎn)生的運(yùn)行結(jié)果又不相同時
產(chǎn)品類非常復(fù)雜,或者產(chǎn)品類中的調(diào)用順序不同產(chǎn)生了不同的效能,這個時候使用建造者模式非常合適
當(dāng)初始化一個對象特別復(fù)雜,如參數(shù)多,且很多參數(shù)都具有默認(rèn)值時
建造者實現(xiàn)客戶
客戶提出的需求,比如我想要什么,我需要什么樣的,這個我得告訴有這個東西的人對吧或是可以建造的人,那現(xiàn)在客戶說了我需要建造一個房子,下面是我們的客戶需求碼
class Product { constructor () { this.bedroom = "" this.living = "" this.kitchen ="" } }
上面的代碼我創(chuàng)建了一個Product類,里面產(chǎn)生了一個臥室的空間變量bedroom,一個客廳living的空間,一個廚房kitchen的空間
抽象建造者類
我們需要找到它們共同的本質(zhì),從而寫一個屬于臥室,客廳,廚房的抽象類函數(shù),那么抽象是什么:從具體事物抽出、概括出它們共同的方面、本質(zhì)屬性與關(guān)系等,而將個別的、非本質(zhì)的方面、屬性與關(guān)系舍棄,這種思維過程,稱為抽象。
總的來說我絕絕的它們是虛無縹緲的東西,需要你自己的思維去想去思考,當(dāng)然每個人的思考方式,思考的點不同抽象出的本質(zhì)就不一樣
class house { build () { console.log("建造") } }
上面的代碼是我們編寫一個簡單的房子類,我們在這里抽離的本質(zhì)是它的建造,俗話說就是蓋的那種,你懂得~
簡單舉例:
本質(zhì):運(yùn)動
事物具體的實現(xiàn):跑步,游泳
本質(zhì):射擊
事物具體的實現(xiàn):手槍射擊,步槍射擊
本質(zhì):行駛
事物具體的實現(xiàn):寶馬行駛,奔馳行駛
具體的建造類
就是我們要具體怎么建造臥室bedroom,客廳living,廚房kitchen我們要具體的去實現(xiàn)客戶想要的東西
// 臥室的建造類型 class Bedroom extends house { build () { console.log("建造臥室") } } // 客廳的建造類 class Living extends house { build () { console.log("建造客廳") } } // 廚房的建造類 class Kitchen extends house { build () { console.log("建造廚房") } }
上面的代碼就是我們實現(xiàn)三個不同風(fēng)格的房子代碼實現(xiàn)
指揮官類
這個大家應(yīng)該可以想象的到它是要干什么吧,就正如我們平常去工地打工建造房子,每個隊伍肯定有一個包工頭吧,或者是這個房子項目的經(jīng)理工程師之類,它們肯定每天都會給你們布置任務(wù),今天要完成什么,用什么機(jī)器或者是摸具,或者是哪些大型工具什么的
// 指揮創(chuàng)建用戶所需房子 class Command { construct (build) { build.build() } }
上面則是我們的指揮官類,每個需要創(chuàng)建的房子都要通過它的指揮去完成,沒有它是不行的,這樣我們也可以達(dá)到解耦的效果
代碼組合實現(xiàn)Title
上面我們的代碼中多了一個最終產(chǎn)品完成類,主要就是體現(xiàn)通過我們的一系列創(chuàng)建我們完成了哪些東西,也可以依據(jù)這些東西再去處理我們的邏輯,以及進(jìn)行擴(kuò)展等。
我們首先new一個臥室的構(gòu)造函數(shù),一個客廳的構(gòu)造函數(shù),繼續(xù)new指揮官newCommand構(gòu)造函數(shù)用來指揮創(chuàng)建,newCommand.construct(newBedroom)建造臥室,newCommand.construct(newLiving)建造客廳,通過組裝最終產(chǎn)品類提交完成報告。
建造者模式我們今天就講到這里了,具體的實現(xiàn)以及大概的代碼我都已經(jīng)給大家展示了。
參考: 建造者
創(chuàng)建型設(shè)計模式之Builder模式
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/104719.html
摘要:而建造者模式則是要求按照指定的藍(lán)圖建造產(chǎn)品,它的主要目的是通過組裝零配件而產(chǎn)生一個新產(chǎn)品。最后通過一個套餐實例,介紹了建造者模式在實例中的基本使用手段。 歷史文章回顧: 設(shè)計模式專欄 深入理解單例模式 深入理解工廠模式 歷史優(yōu)質(zhì)文章推薦: 分布式系統(tǒng)的經(jīng)典基礎(chǔ)理論 可能是最漂亮的Spring事務(wù)管理詳解 面試中關(guān)于Java虛擬機(jī)(jvm)的問題看這篇就夠了 無論是在現(xiàn)實世界中還是在軟件...
摘要:汽車本身就是復(fù)雜產(chǎn)品對象,其制造過程可以形象的表示建造者模式。另一輛法拉利,。法拉利具體建造者代碼如下構(gòu)造法拉利的第一部分。咻咻法拉利已造好三建造者模式的優(yōu)缺點優(yōu)點降低代碼耦合度。 在未上大學(xué)之前,一直有個夢想I have a dream!,就是能成為一位汽車工程師,一直幻想著開著自己設(shè)計的汽車飛奔在公路上,迷倒了萬千少女。咳咳~~雖然現(xiàn)在沒實現(xiàn)我的dream,但夢想還是得有的。 說到...
摘要:與工廠模式相比,建造者模式一般用來創(chuàng)建更為復(fù)雜的對象,因為對象的創(chuàng)建過程更為復(fù)雜,因此將對象的創(chuàng)建過程獨立出來組成一個新的類導(dǎo)演類。 什么是建造者設(shè)計模式 建造者模式:將一個復(fù)雜對象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過程可以創(chuàng)建不同的表示的設(shè)計模式。 設(shè)計場景: 有一個用戶的UserInfo類,創(chuàng)建這個類,需要創(chuàng)建用戶的姓名,年齡,愛好等信息,才能獲得用戶具體的信息結(jié)果。如: 這是一個...
摘要:優(yōu)點建造者模式的封裝性很好,對象本身與構(gòu)建過程解耦。建造者模式很容易進(jìn)行擴(kuò)展。適用場景需要生成的對象具有復(fù)雜得內(nèi)部結(jié)構(gòu)且內(nèi)部屬性本身相互依賴建造者模式的代碼實現(xiàn)建造者模式主要有個部分產(chǎn)品類建造者類指揮者類客戶。建造者完成相應(yīng)的部分。 建造者模式 建造者模式(builder pattern)比較簡單,它屬于創(chuàng)建型模式的一種,將一個復(fù)雜的對象分解成多個簡單的對象來進(jìn)行構(gòu)建,將復(fù)雜的構(gòu)建層與...
摘要:即建造者模式可以強(qiáng)制實行一種分步驟進(jìn)行的建造過程。指導(dǎo)類負(fù)責(zé)調(diào)用適當(dāng)?shù)慕ㄔ煺邅斫M建產(chǎn)品,指導(dǎo)類一般不與產(chǎn)品類發(fā)生依賴關(guān)系,與指導(dǎo)類直接交互的是建造者類建造者模式優(yōu)點建造者模式的封裝性很好。 建造者模式 將一個復(fù)雜的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。主要解決在軟件系統(tǒng)中,有時候面臨著一個復(fù)雜對象的創(chuàng)建工作,由于需求的變化,這個復(fù)雜對象的某些部分經(jīng)常面臨著劇烈的變化...
閱讀 3681·2020-12-03 17:42
閱讀 2831·2019-08-30 15:54
閱讀 2310·2019-08-30 15:44
閱讀 628·2019-08-30 14:08
閱讀 1029·2019-08-30 14:00
閱讀 1159·2019-08-30 13:46
閱讀 2849·2019-08-29 18:33
閱讀 3133·2019-08-29 14:11