



版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、設(shè)計(jì)模式(Design Patterns)目的了解 23 種設(shè)計(jì)模式掌握常用幾種設(shè)計(jì)模式設(shè)計(jì)模式簡(jiǎn)介最早提出“設(shè)計(jì)模式”概念的是建筑設(shè)計(jì)大師亞力山大Alexander。在 1970年他的建筑的永恒之道 里描述了投計(jì)模式的發(fā)現(xiàn),因?yàn)樗呀?jīng)存在了千百年之久,而現(xiàn)代才被通過(guò)大量的研究而被發(fā)現(xiàn)。在建筑的永恒之道里這樣描述:模式是一條由三個(gè)部分組成的通用規(guī)則:它表示了一個(gè)特定環(huán)境、一類問(wèn)題和一個(gè)解決方案之間的關(guān)系。每一個(gè)模式描述了一個(gè)不斷重復(fù)發(fā)生的問(wèn)題,以及該問(wèn)題解決方案的核心設(shè)計(jì)。盡管亞力山大的著作是針對(duì)建筑領(lǐng)域的,但他的觀點(diǎn)實(shí)際上適用于所有的工程設(shè)計(jì)領(lǐng)域, 其中也包括軟件設(shè)計(jì)領(lǐng)域。 “軟件設(shè)計(jì)模式”
2、 ,這個(gè)術(shù)語(yǔ)是在 1990 年代由 Erich Gamma 等人從建筑設(shè)計(jì)領(lǐng)域引入到計(jì)算機(jī)科學(xué)中來(lái)的。目前主要有 23 種。創(chuàng)建型創(chuàng)建對(duì)象時(shí),不再由我們直接實(shí)例化對(duì)象;而是根據(jù)特定場(chǎng)景,由程序來(lái)確定創(chuàng)建對(duì)象的方式,從而保證更大的性能、更好的架構(gòu)優(yōu)勢(shì)。? 單例模式 (Singleton)? 構(gòu)建模式 (Builder)? 原型模式 (Prototype)? 簡(jiǎn)單工廠模式 (Simple Factory)? 抽象工廠模式 (Abstract Factory)? 工廠方法模式 (Factory Method)結(jié)構(gòu)型將類和對(duì)象組合起來(lái),以構(gòu)成更加復(fù)雜的結(jié)構(gòu) ,幫助開(kāi)發(fā)人員將簡(jiǎn)單對(duì)象組合在一起形成更加復(fù)
3、雜的結(jié)構(gòu) ,處理對(duì)象與對(duì)象之間的各種關(guān)系? 代理模式 (Proxy)? 適配器模式 (Adapter)? 裝飾者模式 (Decorator)? 組合模式 (Composite)? 橋連接模式 (Bridge)? 蠅量模式 (Flyweight)?外觀模式 (Facade)行為型用于幫助系統(tǒng)間各對(duì)象的通信,以及如何控制復(fù)雜系統(tǒng)中流程。? 策略模式 (Strategy)? 狀態(tài)模式 (State)? 責(zé)任鏈模式 (Chain of Responsibility)? 解釋器模式 (Interpreter)? 命令模式 (Command)? 觀察者模式 (Observer)? 備忘錄模式 (Memen
4、to)? 迭代器模式 (Iterator)? 模板方法模式 (Template Method)? 訪問(wèn)者模式 (Visitor)? 中介者模式 (Mediator)23 種設(shè)計(jì)模式經(jīng)典文檔 -23種設(shè)計(jì)模式.docx常見(jiàn)設(shè)計(jì)模式介紹1. 單例模式 (singleton)有些時(shí)候,允許自由創(chuàng)建某個(gè)類的實(shí)例沒(méi)有意義,還可能造成系統(tǒng)性能下降。如果一個(gè)類始終只能創(chuàng)建一個(gè)實(shí)例,則這個(gè)類被稱為單例類,這種模式就被稱為單例模式。單例模式主要有如下兩個(gè)優(yōu)勢(shì):1) 減少創(chuàng)建 Java 實(shí)例所帶來(lái)的系統(tǒng)開(kāi)銷2) 便于系統(tǒng)跟蹤單個(gè) Java 實(shí)例的生命周期、實(shí)例狀態(tài)等。2. 簡(jiǎn)單工廠 (StaticFactory
5、Method)簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。簡(jiǎn)單工廠模式是工廠模式家族中最簡(jiǎn)單實(shí)用的模式, 可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)。A 實(shí)例調(diào)用 B 實(shí)例的方法,稱為 A 依賴于 B。如果使用 new 關(guān)鍵字來(lái)創(chuàng)建一個(gè) B 實(shí)例(硬編碼耦合),然后調(diào)用 B 實(shí)例的方法。 一旦系統(tǒng)需要重構(gòu):需要使用 C 類來(lái)代替 B 類時(shí),程序不得不改寫 A 類代碼。而用工廠模式則不需要關(guān)心 B 對(duì)象的實(shí)現(xiàn)、創(chuàng)建過(guò)程。使用簡(jiǎn)單工廠模式的優(yōu)勢(shì):讓對(duì)象的調(diào)用者和對(duì)象創(chuàng)建過(guò)程分離,當(dāng)對(duì)象調(diào)用者需要對(duì)象時(shí), 直接向工廠請(qǐng)求即可。 從而避免了對(duì)象的調(diào)用者與對(duì)象的實(shí)現(xiàn)類以硬編碼方式耦合,以提高系
6、統(tǒng)的可維護(hù)性、可擴(kuò)展性。 工廠模式也有一個(gè)小小的缺陷:當(dāng)產(chǎn)品修改時(shí),工廠類也要做相應(yīng)的修改。3. 工廠方法 (Factory Method) 和抽象工廠 (Abstract Factory)如果我們不想在工廠類中進(jìn)行邏輯判斷, 程序可以為不同產(chǎn)品類提供不同的工廠,不同的工廠類和產(chǎn)不同的產(chǎn)品。 當(dāng)使用工廠方法設(shè)計(jì)模式時(shí), 對(duì)象調(diào)用者需要與具體的工廠類耦合,如:使用簡(jiǎn)單工廠類, 需要在工廠類里做邏輯判斷。 而工廠類雖然不用在工廠類做判斷。但是帶來(lái)了另一種耦合: 客戶端代碼與不同的工廠類耦合。 為了解決客戶端代碼與不同工廠類耦合的問(wèn)題。 在工廠類的基礎(chǔ)上再增加一個(gè)工廠類,該工廠類不制造具體的被調(diào)用對(duì)
7、象,而是制造不同工廠對(duì)象。如:4. 外觀模式 (Facade)隨著系統(tǒng)的不斷改進(jìn)和開(kāi)發(fā), 它們會(huì)變得越來(lái)越復(fù)雜, 系統(tǒng)會(huì)生成大量的類,這使得程序流程更難被理解。外觀模式可為這些類提供一個(gè)簡(jiǎn)化的接口,從而簡(jiǎn)化訪問(wèn)這些類的復(fù)雜性。外觀模式( Facade)也被稱為正面模式、門面模式,這種模式用于將一組復(fù)雜的類包裝到一個(gè)簡(jiǎn)單的外部接口中。5. 代理模式 (Proxy)代理模式的作用是: 為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。 在某些情況下, 一個(gè)客戶不想或者不能直接引用另一個(gè)對(duì)象, 而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。代理模式一般涉及到的角色有:抽象角色:聲明真實(shí)對(duì)象和代理對(duì)象的共同接口;代理角色: 代理對(duì)象角色內(nèi)部含有對(duì)真實(shí)對(duì)象的引用, 從而可以操作真實(shí)對(duì)象,同時(shí)代理對(duì)象提供與真實(shí)對(duì)象相同的接口以便在任何時(shí)刻都能代替真實(shí)對(duì)象。同時(shí),代理對(duì)象可以在執(zhí)行真實(shí)對(duì)象操作時(shí),附加其他的操作,相當(dāng)于對(duì)真實(shí)對(duì)象進(jìn)行封裝。真實(shí)角色:代理角色所代表的真實(shí)對(duì)象,是我們最終要引用的對(duì)象??创a6. 橋接模式 (Bridge)由于實(shí)際的需要, 某個(gè)類具有兩個(gè)以上的維度變化,如果只是使用繼承
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廈門a2貨運(yùn)從業(yè)資格證考試
- 2025年武威駕??荚囏涍\(yùn)從業(yè)資格證考試
- 《中醫(yī)藥基礎(chǔ)》課程標(biāo)準(zhǔn)
- 減肥連鎖加盟合同范本
- 農(nóng)村后院出租合同范本
- 廠房車間裝修合同范本
- 加工合同范本文庫(kù)
- 中專畢業(yè)個(gè)人自我鑒定
- 關(guān)于小麥?zhǔn)召?gòu)合同范本
- 倉(cāng)庫(kù)配送員合同范本
- 私立醫(yī)療機(jī)構(gòu)2025年運(yùn)營(yíng)策略與計(jì)劃
- 2025年蘇州農(nóng)業(yè)職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 字體設(shè)計(jì)完整版本
- 【歷史】安史之亂與唐朝衰亡課件 2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 2024年蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 《歡樂(lè)運(yùn)動(dòng)會(huì):1 我為班級(jí)出把力》說(shuō)課稿-2024-2025學(xué)年四年級(jí)上冊(cè)綜合實(shí)踐活動(dòng)滬科黔科版
- 2024年汽車駕駛員(高級(jí))證考試題庫(kù)附答案
- 《兔的飼養(yǎng)管理》課件
- 2025年事業(yè)單位考試(綜合管理類A類)綜合應(yīng)用能力試題及解答參考
- “互聯(lián)網(wǎng)+”大學(xué)生創(chuàng)新創(chuàng)業(yè)大賽計(jì)劃書(shū)一等獎(jiǎng)
- 四川政采評(píng)審專家入庫(kù)考試基礎(chǔ)題練習(xí)試題附答案
評(píng)論
0/150
提交評(píng)論