最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

第8章 建造者模式

2022-02-17 21:20 作者:取悅疾風(fēng)  | 我要投稿

內(nèi)容來自尚硅谷Java設(shè)計(jì)模式(圖解+框架源碼剖析)_嗶哩嗶哩_bilibili

寫在前面:本文內(nèi)容大致和原視頻內(nèi)老師的筆記內(nèi)容相同,會偶爾插入自己的注釋和理解,盡量會完成作業(yè)

兄弟們!加油!學(xué)就完事了!奧里給!

8.1蓋房項(xiàng)目需求

1)????? 需要建房子:這一過程為打樁、砌墻、封頂

2)????? 房子有各種各樣的,比如普通房,高樓,別墅,各種房子的過程雖然一樣,但是要求不要相同的.

3)????? 請編寫程序,完成需求.

?

8.2傳統(tǒng)方武解決蓋房需求

1)????? 思路分析(圖解)

2)????? 看老師代碼的演示

8.3傳統(tǒng)方式的問題分析

1)????? 優(yōu)點(diǎn)是比較好理解,簡單易操作。

2)????? 設(shè)計(jì)的程序結(jié)構(gòu),過于簡單,沒有設(shè)計(jì)緩存層對象,程序的擴(kuò)展和維護(hù)不好.也就是說,這種設(shè)計(jì)方案,把產(chǎn)品(即:房子)和創(chuàng)建產(chǎn)品的過程(即:建房子流程)封裝在一起,耦合性增強(qiáng)了。

3)????? 解決方案:將產(chǎn)品和產(chǎn)品建造過程解耦=>建造者模式.

8.4建造者模式的基本介紹

1)????? 建造者模式(Builder Pattern)又叫生成器模式,是一種對象構(gòu)建模式。它可以將復(fù)雜對象的建造過程抽象出來(抽象類別),使這個(gè)抽象過程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)(屬性)的對象。

2)????? 建造者模式是一步一步創(chuàng)建一個(gè)復(fù)雜的對象,它允許用戶只通過指定復(fù)雜對象的類型和內(nèi)容就可以構(gòu)建它們,用戶不需要知道內(nèi)部的具體構(gòu)建細(xì)節(jié)。

8.5建造者模式的4個(gè)核心角色

1)????? Product(產(chǎn)品角色):一個(gè)具體的產(chǎn)品對象。

2)????? Builder(抽象建造者):創(chuàng)建一個(gè)Product對象的各個(gè)部件指定的接口/抽象類。

3)????? ConcreteBuilder(具體建造者):實(shí)現(xiàn)接口,構(gòu)建和裝配各個(gè)部件。

4)????? Director(指揮者):構(gòu)建一個(gè)使用Builder接口的對象。它主要是用于創(chuàng)建一個(gè)復(fù)雜的對象。它主要有兩個(gè)作用,一是:隔離了客戶與對象的生產(chǎn)過程,二是:負(fù)責(zé)控制產(chǎn)品對象的生產(chǎn)過程。

8.6建造者模式原理類圖

8.7建造者模式解決蓋房需求應(yīng)用實(shí)例

1)????? 需要建房子:這一過程為打樁、砌墻、封頂。不管是普通房子也好,別墅也好都需要經(jīng)歷這些過程,下面我們使用建造者模式(Builder Pattern)來完成

2)????? 思路分析圖解(類圖)

3)????? 代碼實(shí)現(xiàn)

8.8建造者模式在JDK的應(yīng)用和源碼分析

1)????? java.lang.StringBuilder中的建造者模式

2)????? 代碼說明+Debug源碼

3)????? 源碼中建造者模式的角色分析

ü? Appendable接口定義了多個(gè)Append方法(抽象方法),即Appendable為抽象建造者,定義了抽象方法

ü? AbstractStringBuilder 實(shí)現(xiàn)了Appendable接口方法,這里的 AbstractStringBuilder已經(jīng)是建造者,只是不能實(shí)例化

ü? StringBuilder 即充當(dāng)了指揮者角色,同時(shí)充當(dāng)了具體的建造者,建造方法的實(shí)現(xiàn)是由AbstractStringBuilder完成,而StringBuilder繼承了AbstractStringBuilder

8.9建造者模式細(xì)節(jié)

1)????? 客戶端(使用程序)不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié),將產(chǎn)品本身與產(chǎn)品的創(chuàng)建過程解耦,使得相同的創(chuàng)建過程可以創(chuàng)建不同的產(chǎn)品對象

2)????? 每一個(gè)具體建造者都相對獨(dú)立,而與其他的具體建造者無關(guān),因此可以很方便地替換具體建造者或增加新的具體建造者,用戶使用不同的具體建造者即可得到不同的產(chǎn)品對象

3)????? 可以更加精細(xì)地控制產(chǎn)品的創(chuàng)建過程。將復(fù)雜產(chǎn)品的創(chuàng)建步驟分解在不同的方法中,使得創(chuàng)建過程更加清晰,也更方便使用程序來控制創(chuàng)建過程

4)????? 增加新的具體建造者無須修改原有類庫的代碼,指揮者類針對抽象建造者類編程,系統(tǒng)擴(kuò)展方便,符合“開閉原則”

5)????? 建造者模式所創(chuàng)建的產(chǎn)品一般具有較多的共同點(diǎn),其組成部分相似,如果產(chǎn)品之間的差異性很大,則不適合使用建造者模式,因此其使用范圍受到一定的限制。

6)????? 如果產(chǎn)品的內(nèi)部變化復(fù)雜,可能會導(dǎo)致需要定義很多具體建造者類來實(shí)現(xiàn)這種變化,導(dǎo)致系統(tǒng)變得很龐大,因此在這種情況下,要考慮是否選擇建造者模式.

7)????? 抽象工廠模式vs建造者模式

抽象工廠模式實(shí)現(xiàn)對產(chǎn)品家族的創(chuàng)建,一個(gè)產(chǎn)品家族是這樣的一系列產(chǎn)品:具有不同分類維度的產(chǎn)品組合,采用抽象工廠模式不需要關(guān)心構(gòu)建過程,只關(guān)心什么產(chǎn)品由什么工廠生產(chǎn)即可。而建造者模式則是要求按照指定的藍(lán)圖建造產(chǎn)品,它的主要目的是通過組裝零配件而產(chǎn)生一個(gè)新產(chǎn)品


第8章 建造者模式的評論 (共 條)

分享到微博請遵守國家法律
崇仁县| 仲巴县| 格尔木市| 黑山县| 桐庐县| 福海县| 化隆| 平山县| 格尔木市| 克拉玛依市| 保定市| 东莞市| 汉阴县| 宝鸡市| 明星| 屯留县| 陵水| 江口县| 米泉市| 洞头县| 晋州市| 晋中市| 阜南县| 普格县| 内黄县| 泸溪县| 莱州市| 霍山县| 西安市| 安龙县| 资源县| 普格县| 周宁县| 婺源县| 红原县| 稻城县| 乳山市| 正安县| 莆田市| 赣州市| 合阳县|