面向?qū)ο蟮脑O(shè)計(jì)模式學(xué)習(xí)

面向?qū)ο蟮脑O(shè)計(jì)模式學(xué)習(xí)

ID:9094945

大?。?37.98 KB

頁(yè)數(shù):33頁(yè)

時(shí)間:2018-04-17

面向?qū)ο蟮脑O(shè)計(jì)模式學(xué)習(xí)_第1頁(yè)
面向?qū)ο蟮脑O(shè)計(jì)模式學(xué)習(xí)_第2頁(yè)
面向?qū)ο蟮脑O(shè)計(jì)模式學(xué)習(xí)_第3頁(yè)
面向?qū)ο蟮脑O(shè)計(jì)模式學(xué)習(xí)_第4頁(yè)
面向?qū)ο蟮脑O(shè)計(jì)模式學(xué)習(xí)_第5頁(yè)
資源描述:

《面向?qū)ο蟮脑O(shè)計(jì)模式學(xué)習(xí)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。

1、23種設(shè)計(jì)模式可以在功能設(shè)計(jì),功能的編程實(shí)現(xiàn)設(shè)計(jì),程序結(jié)構(gòu)優(yōu)化和性能優(yōu)化等方面給我們以幫助。大部分模式我們?cè)诰幊痰倪^(guò)程中都已經(jīng)無(wú)意識(shí)的使用過(guò)。每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題,以及該問(wèn)題的解決方案的核心。這是面向?qū)ο缶幊倘藛T必須掌握的一門內(nèi)功。設(shè)計(jì)模式描述了軟件設(shè)計(jì)過(guò)程中某一類常見問(wèn)題的一般性的解決方案。面向?qū)ο笤O(shè)計(jì)模式描述了面向?qū)ο笤O(shè)計(jì)過(guò)程中、特定場(chǎng)景下、類與相互通信的對(duì)象之間常見的組織關(guān)系。整個(gè)設(shè)計(jì)模式貫穿一個(gè)原理:面對(duì)接口編程,而不是面對(duì)實(shí)現(xiàn).目標(biāo)原則是:降低耦合,增強(qiáng)靈活性.1.1.創(chuàng)建型創(chuàng)建型:負(fù)責(zé)對(duì)象

2、創(chuàng)建。一、Singleton,單例模式:定義:保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。單例模式有延遲初始化和非延遲兩種實(shí)現(xiàn)方式。單體模式注意事項(xiàng):有時(shí)在某些情況下,使用Singleton并不能達(dá)到Singleton的目的,如有多個(gè)Singleton對(duì)象同時(shí)被不同的類裝入器裝載;在EJB這樣的分布式系統(tǒng)中使用也要注意這種情況,因?yàn)镋JB是跨服務(wù)器,跨JVM的。Singleton模式看起來(lái)簡(jiǎn)單,使用方法也很方便,但是真正用好,是非常不容易,需要對(duì)Java的類線程內(nèi)存等概念有相當(dāng)?shù)牧私狻?傊喝绻愕膽?yīng)用基于容器,那么S

3、ingleton模式少用或者不用,可以使用相關(guān)替代技術(shù)。二、AbstractFactory,抽象工廠模式又稱為工具箱,產(chǎn)生產(chǎn)品族,但不利于產(chǎn)生新的產(chǎn)品。定義:提供一個(gè)接口,讓該接口負(fù)責(zé)創(chuàng)建一系列“相關(guān)或者相互依賴的對(duì)象”,無(wú)需指定它們具體的類。面向?qū)ο蟮脑O(shè)計(jì)中,我們使用“new”的方式來(lái)創(chuàng)建對(duì)象,這樣的問(wèn)題就是:我們依賴實(shí)現(xiàn),不能應(yīng)對(duì)“具體實(shí)例化類型”的變化。變化點(diǎn)在“對(duì)象創(chuàng)建”,因此就封裝“對(duì)象創(chuàng)建”,面向接口編程——依賴接口,而非依賴實(shí)現(xiàn)。AbstractFactory模式的幾個(gè)要點(diǎn)1.如果沒有應(yīng)對(duì)“多系列對(duì)象創(chuàng)建”的需求變

4、化,則沒有必要使用AbstractFactory模式,這時(shí)候使用簡(jiǎn)單的靜態(tài)工廠完全可以。2."系列對(duì)象"指的是這些對(duì)象之間有相互依賴、或作用的關(guān)系,例如游戲開發(fā)場(chǎng)景中“道路”與“房屋”的依賴,“道路”與“地道”的依賴。3.AbstractFactory模式主要在于應(yīng)對(duì)“新系列”的需求變動(dòng)。其缺點(diǎn)在于難以應(yīng)對(duì)“新對(duì)象”的需求變動(dòng)。4.AbstractFactory模式經(jīng)常和FactoryMethod模式共同組合來(lái)應(yīng)對(duì)“對(duì)象創(chuàng)建”的需求變化。(FactoryMethod是應(yīng)對(duì)對(duì)象的變化,)Builder模式和AbstractFact

5、ory模式的區(qū)別Builder模式更強(qiáng)調(diào)的是對(duì)象部分的“構(gòu)建”這樣一個(gè)嚴(yán)格的過(guò)程,它構(gòu)建的是整個(gè)對(duì)象的各個(gè)部分。它把構(gòu)建穩(wěn)定下來(lái)之后,各個(gè)部分在變化,最后組合成一個(gè)整體的對(duì)象。AbstractFactory模式構(gòu)建的是一組系列交互的對(duì)象?;ハ嘁蕾嚒⒒ハ嘟换サ膶?duì)象和一個(gè)對(duì)象的各個(gè)部分是有區(qū)別的。三、FactoryMethod,工廠方法模式又稱為多形性工廠;定義:一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類,F(xiàn)actoryMethod使一個(gè)類的實(shí)例化延遲到了子類。1)抽象工廠角色(AbstractCreator):這是工廠方法模

6、式的核心,它與應(yīng)用程序無(wú)關(guān)。是具體工廠角色必須實(shí)現(xiàn)的接口或者必須繼承的父類。在java中它由抽象類或者接口來(lái)實(shí)現(xiàn)。2)具體工廠角色(Creator):它含有和具體業(yè)務(wù)邏輯有關(guān)的代碼。由應(yīng)用程序調(diào)用以創(chuàng)建對(duì)應(yīng)的具體產(chǎn)品的對(duì)象。3)抽象產(chǎn)品角色(AbstractProduct):它是具體產(chǎn)品繼承的父類或者是實(shí)現(xiàn)的接口。在java中一般有抽象類或者接口來(lái)實(shí)現(xiàn)。4)具體產(chǎn)品角色(Product):具體工廠角色所創(chuàng)建的對(duì)象就是此角色的實(shí)例。在java中由具體的類來(lái)實(shí)現(xiàn)。四、Builder,建造模式建造模式,又叫生成器模式。定義:將一個(gè)復(fù)雜

7、對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示.Builder模式主要用于“分步驟構(gòu)建一個(gè)復(fù)雜的對(duì)象”。在這其中“分步驟”是一個(gè)穩(wěn)定的算法(即Director),而復(fù)雜對(duì)象的各個(gè)部分(即ConcreteBuilder)則經(jīng)常變化。變化點(diǎn)在哪里,封裝哪里——Builder模式主要在于應(yīng)對(duì)“復(fù)雜對(duì)象各個(gè)部分”的頻繁需求變動(dòng)。其缺點(diǎn)在于難以應(yīng)對(duì)“分步驟構(gòu)建算法”的需求變動(dòng)。(例如房屋構(gòu)造如果經(jīng)常改變,那么這個(gè)Builder模式也沒有意義了)AbstractFactory模式解決“系列對(duì)象”的需求變化,Builder模式

8、解決“對(duì)象部分”的需求變化。Builder模式通常和Composite模式組合使用。應(yīng)用舉例:數(shù)據(jù)庫(kù)連接池(每一個(gè)連接的重用)五、Prototype,原始模型模式定義:用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型來(lái)創(chuàng)建新的對(duì)象。通過(guò)給出一個(gè)原型對(duì)象來(lái)指明所

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。