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

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

第6章 工廠模式

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

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

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

6.1簡單工廠模式

6.1.1看一個具體的需求

看一個披薩的項目:要便于披薩種類的擴展,要便于維護

1)????? 披薩的種類很多(比如GreckPizza、CheesePizza 等)

2)????? 披薩的制作有prepare,bake,cut,box

3)????? 完成披薩店訂購功能。

?

6.1.2使用傳統(tǒng)的方式來完成

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

編寫OrderPizza.java 去訂購各種需要的Pizza

1)????? 代碼演示

6.1.3傳統(tǒng)的方式的優(yōu)缺點

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

2)????? 缺點是違反了設(shè)計模式的ocp原則,即對擴展開放,對修改關(guān)閉。即當我們給類增加新功能的時候,盡量不修改代碼,或者盡可能少修改代碼.

3)????? 比如我們這時要新增加一個Pizza的種類(Pepper 披薩),我們需要做如下修改.

如果增加一個pizza類,只要是訂購披薩的代碼,都需要修改

4)????? 改進的思路分析

分析:修改代碼可以接受,但是如果我們在其它的地方也有創(chuàng)建Pizza的代碼,就意味著,也需要修改,而創(chuàng)建Pizza的代碼,往往有多處。

思路:把創(chuàng)建Pizza對象封裝到一個類中,這樣我們有新的Pizza種類時,只需要修改該類就可,其它有創(chuàng)建到Pizza對象的代碼就不需要修改了>簡單工廠模式

6.1.4簡單工廠模式的基本介紹

1)????? 簡單工廠模式是屬于創(chuàng)建型模式,是工廠模式的一種。簡單工廠模式是由一個工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式

2)????? 簡單工廠模式:定義了一個創(chuàng)建對象的類,由這個類來封裝實例化對象的行為(代碼)

3)????? 在軟件開發(fā)中,當我們會用到大量的創(chuàng)建某種、某類或者某批對象時,就會使用到工廠模式

6.1.5使用簡單工廠模式

簡單工廠模式的設(shè)計方案:定義一個可以實例化Pizza對象的類,封裝創(chuàng)建對象的代碼。

代碼演示

6.2工廠方法模式

6.2.1看一個新的需求

披薩項目新的需求:客戶在點披薩時,可以點不同口味的披薩,比如北京的奶酪pizza、北京的胡椒pizza或者是倫敦的奶酪pizza、倫敦的胡椒pizza。

?

6.2.2思路1

使用簡單工廠模式,創(chuàng)建不同的簡單工廠類,比如BJPizaSimpleFactory、LDPizaSimpleFactory等等.從當前這個案例來說,也是可以的,但是考慮到項目的規(guī)模,以及軟件的可維護性、可擴展性并不是特別好

?

6.2.3思路2

使用工廠方法模式

6.2.4工廠方法模式介紹

1.工廠方法模式設(shè)計方案:將披薩項目的實例化功能抽象成抽象方法,在不同的口味點餐子類中具體實現(xiàn)。

2.工廠方法模式:定義了一個創(chuàng)建對象的抽象方法,由子類決定要實例化的類。工廠方法模式將對象的實例化推遲到子類

?

6.2.5工廠方法模式應(yīng)用案例

披薩項目新的需求:客戶在點披薩時,可以點不同口味的披薩,比如北京的奶酪pizza、北京的胡椒pizza或者是倫敦的奶酪pizza、倫敦的胡椒pizza。

?

思路分析

或者看下面這張圖

代碼實現(xiàn)

6.3抽象工廠模式

6.3.1基本介紹

1)????? 抽象工廠模式:定義了一個interface用于創(chuàng)建相關(guān)或有依賴關(guān)系的對象簇,而無需指明具體的類

2)????? 抽象工廠模式可以將簡單工廠模式和工廠方法模式進行整合。

3)????? 從設(shè)計層面看,抽象工廠模式就是對簡單工廠模式的改進(或者稱為進一步的抽象)。

4)????? 將工廠抽象成兩層,AbsFactory(抽象工廠)和具體實現(xiàn)的工廠子類。程序員可以根據(jù)創(chuàng)建對象類型使用對應(yīng)的工廠子類。這樣將單個的簡單工廠類變成了工廠簇,更利于代碼的維護和擴展。

5)????? 類圖

或者看下面的一張圖

6.3.2抽象工廠模式的應(yīng)用實例

使用抽象工廠模式完成披薩項目

6.4工廠模式在JDK-Calendar應(yīng)用的源碼分析

1)????? JDK中的Calendar類中,就使用了簡單工廠模式

2)????? 源碼分析+Debug源碼+說明

源碼部分

6.5工廠模式小結(jié)

1)????? 工廠模式的意義

將實例化對象的代碼提取出來,放到一個類中統(tǒng)一管理和維護,達到和主項目的依賴關(guān)系的解耦。從而提高項目的擴展和維護性。

2)????? 三種工廠模式()

3)????? 設(shè)計模式的依賴抽象原則

?? 創(chuàng)建對象實例時,不要直接new類,而是把這個new類的動作放在一個工廠的方法中,并返回。有的書上說,變量不要直接持有具體類的引用。

?? 不要讓類繼承具體類,而是繼承抽象類或者是實現(xiàn)interface(接口)

?? 不要覆蓋基類中已經(jīng)實現(xiàn)的方法。


第6章 工廠模式的評論 (共 條)

分享到微博請遵守國家法律
永平县| 利津县| 明溪县| 资溪县| 孙吴县| 从江县| 民勤县| 建德市| 红桥区| 西丰县| 双峰县| 湘西| 将乐县| 徐州市| 安龙县| 尉氏县| 高雄县| 金湖县| 吴堡县| 神农架林区| 浦城县| 东乌| 崇仁县| 涟源市| 兴城市| 沾化县| 莱州市| 徐闻县| 洛宁县| 宣威市| 观塘区| 文化| 南京市| 白沙| 故城县| 定安县| 会泽县| 双辽市| 阳东县| 松原市| 揭西县|