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