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