版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、份培訓(xùn)設(shè)計(jì)模式PPT課件本章目標(biāo)本章目標(biāo) 了解23種設(shè)計(jì)模式 掌握常用幾種設(shè)計(jì)模式 設(shè)計(jì)模式簡介 單例模式 工廠模式 代理模式 適配器模式主要內(nèi)容主要內(nèi)容設(shè)計(jì)模式設(shè)計(jì)模式Design Patterns: Elements of Reusable Object-Oriented Software( Gang of Four(GOF)95是軟件模式的開創(chuàng)性著作用來解決代碼復(fù)用,避免程序大量修改的一些成熟的套路或者方法用了設(shè)計(jì)模式會(huì)使項(xiàng)目復(fù)雜度增加,開發(fā)成本增加,但維護(hù)成本降低,靈活性更好,擴(kuò)展性更強(qiáng)創(chuàng)建類型的模式( Creational )結(jié)構(gòu)類型的模式( Structural )行為類型的模式(
2、 Behavioral )創(chuàng)建類型的模式創(chuàng)建類型的模式 創(chuàng)建類型的模式如何有效地創(chuàng)建類的實(shí)例 單例模式(Singleton) 構(gòu)建模式(Builder) 原型模式(Prototype) 簡單工廠模式(Simple Factory) 抽象工廠模式(Abstract Factory) 工廠方法模式(Factory Method)結(jié)構(gòu)類型的模式結(jié)構(gòu)類型的模式 結(jié)構(gòu)類型的模式將類與對象組合起來,以構(gòu)成更加復(fù)雜的結(jié)構(gòu) ,幫助開發(fā)人員將簡單對象組合在一起形成更加復(fù)雜的結(jié)構(gòu),處理對象與對象之間的各種關(guān)系 代理模式(Proxy) 適配器模式(Adapter) 裝飾者模式(Decorator) 組合模式(Com
3、posite) 橋連接模式(Bridge) 蠅量模式(Flyweight) 外觀模式(Facade)行為類型的模式行為類型的模式 行為類型的模式主要是處理對象之間通訊的模式 , 幫助開發(fā)人員控制類之間的通訊 策略模式(Strategy) 狀態(tài)模式(State) 責(zé)任鏈模式(Chain of Responsibility) 解釋器模式(Interpreter) 命令模式(Command) 觀察者模式(Observer) 備忘錄模式(Memento) 迭代器模式(Iterator) 模板方法模式(Template Method) 訪問者模式(Visitor) 中介者模式(Mediator)設(shè)計(jì)原則
4、設(shè)計(jì)原則 邏輯代碼獨(dú)立到單獨(dú)的方法中,注重封裝性-易讀,易復(fù)用。不要在一個(gè)方法中,寫下上百行的邏輯代碼。把各小邏輯代碼獨(dú)立出來,寫于其它方法中,易讀,可重復(fù)調(diào)用。模塊間松耦合、模塊內(nèi)緊耦合。 熟練運(yùn)用繼承的思想:找出應(yīng)用中相同之處,且不容易發(fā)生變化的東西,把它們抽取到抽象類中,讓子類去繼承它們; 熟練運(yùn)用接口的思想:找出應(yīng)用中可能需要變化之處,把它們獨(dú)立出來,不要與那些不需要變化的代碼混在一起。 繼承與接口繼承與接口 不管黑貓白貓,只要抓得到老鼠,都是好貓 貓:抓老鼠、叫、顏色各異 第一種方法:(一次性代碼)直接編寫出各種貓的類,各類有三個(gè)方法:quack():叫catch():抓老鼠 dis
5、play():顏色 貓的共性:抓老鼠、叫、 貓的個(gè)性:顏色(黑白) 黑貓、白貓 運(yùn)用繼承運(yùn)用繼承public class Cat public void quack() /呱呱叫 System.out.println(“呱呱叫”); public void catch() /抓老鼠 System.out.println(“抓老鼠); public abstract void display();/*因?yàn)橥庥^不一樣,讓子類自己去決定了。*/對于它的子類只需簡單的繼承就可以了,并實(shí)現(xiàn)自己的display()方法。/白貓public class WhiteCat extends Duck publi
6、c void display() System.out.println(“白貓.”); /黑貓public class BlackCat extends Duck public void display() System.out.println(“黑貓.); 運(yùn)用接口運(yùn)用接口public class Cat public void quack() /呱呱叫 System.out.println(“呱呱叫”); public abstratact void display();/*因?yàn)橥庥^不一樣,讓子類自己去決定了。*/public interface ICatch public void ca
7、tch();/白貓public class WhiteCat extends Cat implements ICatch public void display() System.out.println(“白貓的顏色.”); public void catch() /實(shí)現(xiàn)該方法 /黑貓public class BlackCat extends Cat/ implements ICatch public void display() System.out.println(“黑貓的顏色.); 小結(jié)小結(jié) 繼承的好處:讓共同部分,可以復(fù)用.避免重復(fù)編程. 繼承的不好:耦合性高.一旦超類添加一個(gè)新方法,
8、子類都繼承,擁有此方法,若子類相當(dāng)部分不實(shí)現(xiàn)此方法,則要進(jìn)行大批量修改.繼承時(shí),子類就不可繼承其它類了. 接口的好處:解決了繼承耦合性高的問題.且可讓實(shí)現(xiàn)類,繼承或?qū)崿F(xiàn)其它類或接口. 接口的不好:不能真正實(shí)現(xiàn)代碼的復(fù)用.SINGLETONSINGLETON模式模式 概念:單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。單例模式只應(yīng)在有真正的“單一實(shí)例”的需求時(shí)才可使用 場景:讀取配置文件、Socket鏈接、數(shù)據(jù)庫資源等publicclassSingletonAprivatestaticSingletonAs;publicstaticSingletonAgetInsta
9、nce()if(s=null)s=newSingletonA();returns;SingletonAsingle=SingletonA.getInstance();簡單工廠模式簡單工廠模式 概念:簡單工廠模式是由一個(gè)工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。 工廠(Creator)角色 :簡單工廠模式的核心,它負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有實(shí)例的內(nèi)部邏輯。工廠類可以被外界直接調(diào)用,創(chuàng)建所需的產(chǎn)品對象。 抽象產(chǎn)品(Product)角色 :簡單工廠模式所創(chuàng)建的所有對象的父類,它負(fù)責(zé)描述所有實(shí)例所共有的公共接口。 具體產(chǎn)品(Concrete Product)角色:是簡單工廠模式的創(chuàng)建目標(biāo),所有創(chuàng)建的對象都是充當(dāng)這個(gè)
10、角色的某個(gè)具體類的實(shí)例。 實(shí)例實(shí)例 見實(shí)例。簡單工廠模式簡單工廠模式 優(yōu)點(diǎn):通過使用工廠類,外界可以從直接創(chuàng)建具體產(chǎn)品對象的尷尬局面擺脫出來,僅僅需要負(fù)責(zé)“消費(fèi)”對象就可以了。而不必管這些對象究竟如何創(chuàng)建及如何組織的 缺點(diǎn):它所能創(chuàng)建的類只能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。 思考思考 女媧造人:幫我造個(gè)叫張三的人吧!抽象工廠模式抽象工廠模式 概念:抽象工廠模式可以向客戶端提供一個(gè)接口,使得客戶端在不必指定產(chǎn)品具體類型的情況下,創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對象。這就是抽象工廠模式的用意。 抽象工廠(Creator)角色 具體工廠(Concrete Creator)角色 抽象產(chǎn)
11、品(Product)角色 具體產(chǎn)品(Concrete Product)角色抽象工廠模式抽象工廠模式 抽象工廠模式面對的問題是多產(chǎn)品等級結(jié)構(gòu)的系統(tǒng)設(shè)計(jì) 學(xué)習(xí)抽象工廠具體實(shí)例之前,應(yīng)該明白兩個(gè)重要的概念:產(chǎn)品族與產(chǎn)品等級。 產(chǎn)品族:是指位于不同產(chǎn)品等級結(jié)構(gòu)中,功能相關(guān)聯(lián)的產(chǎn)品組成的家族。比如AMD的CPU與AMD芯片的主板,組成一個(gè)家族。Intel的CPU與Intel芯片的主板,又組成一個(gè)家族。而這兩個(gè)家族都來自于兩個(gè)產(chǎn)品等級:CPU,主板。一個(gè)等級結(jié)構(gòu)是由相同的結(jié)構(gòu)的產(chǎn)品組成,示意圖如下:實(shí)例實(shí)例 農(nóng)場主引進(jìn)塑料大棚技術(shù),在大棚里種植熱(Tropical)與亞熱帶(Northern)的水果(Fr
12、uit)與蔬菜(Veggie),用以滿足市場需求,獲取更大的利益 實(shí)例實(shí)例生產(chǎn)水果生產(chǎn)蔬菜實(shí)例實(shí)例 見實(shí)例。抽象工廠模式抽象工廠模式 創(chuàng)建同使用分開 降低耦合度 可擴(kuò)展性思考思考 女媧造人:陰繩女人或雌獸;陽繩男人或雄獸;甩出來泥土像人型即造人類,像獸類則造野獸。代理模式代理模式 概念:對其他對象提供一種代理以控制對這個(gè)對象的訪問。 好處:-是可以在間接訪問對象的同時(shí),要其前或后,添加其它的邏輯代碼。 -對原來邏輯進(jìn)行添加其它邏輯,最終生成新的邏輯。即:對類的方法添加一些額外的邏輯,生成新的方法邏輯。靜態(tài)代理靜態(tài)代理 靜態(tài)代理: -一個(gè)原類與一個(gè)代理類要一一對應(yīng)。-兩者都實(shí)現(xiàn)共同的接口或繼承相
13、同的抽象類;-只是在代理類中,實(shí)例化原類,在原類方法的前后添加新的邏輯。實(shí)例實(shí)例 見實(shí)例。動(dòng)態(tài)代理動(dòng)態(tài)代理 動(dòng)態(tài)代理: Java動(dòng)態(tài)代理類位于Java.lang.reflect包下,一般主要涉及到以下兩個(gè)類:1)Interface InvocationHandler:該接口中僅定義了一個(gè)方法:invoke(Object obj,Method method, Object args) obj一般是指代理類,method是被代理的方法,args為該方法的參數(shù)數(shù)組。這個(gè)抽象方法在代理類中動(dòng)態(tài)實(shí)現(xiàn)。2)Proxy:該類即為動(dòng)態(tài)代理類,其中主要包含以下內(nèi)容:Static Object newProxyInstance(ClassLoader loader, Class interfaces, InvocationHandler h):返回代理類的一個(gè)實(shí)例,返回后的代理類可以當(dāng)作被代理類使用。所謂Dynamic Proxy是這樣一種class:它是在運(yùn)行時(shí)生成的class,在生成它時(shí)你必須提供一組interface給它,然后該class就宣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 程序開發(fā)合同范本
- 苗木收貨協(xié)議書
- 蘋果果合同范本
- 藤椒承包協(xié)議合同
- 視頻制作協(xié)議書
- 認(rèn)的兄妹協(xié)議書
- 討薪委托協(xié)議書
- 設(shè)備贊助協(xié)議書
- 設(shè)計(jì)變更協(xié)議書
- 試用期合同協(xié)議
- 2025中原農(nóng)業(yè)保險(xiǎn)股份有限公司招聘67人筆試備考重點(diǎn)試題及答案解析
- 2025中原農(nóng)業(yè)保險(xiǎn)股份有限公司招聘67人備考考試試題及答案解析
- 2025年違紀(jì)違法典型案例個(gè)人學(xué)習(xí)心得體會(huì)
- 2025年度河北省機(jī)關(guān)事業(yè)單位技術(shù)工人晉升高級工考試練習(xí)題附正確答案
- GB/T 17981-2025空氣調(diào)節(jié)系統(tǒng)經(jīng)濟(jì)運(yùn)行
- 2025 年高職酒店管理與數(shù)字化運(yùn)營(智能服務(wù))試題及答案
- 《公司治理》期末考試復(fù)習(xí)題庫(含答案)
- 藥物臨床試驗(yàn)質(zhì)量管理規(guī)范(GCP)培訓(xùn)班考核試卷及答案
- 四川專升本《軍事理論》核心知識點(diǎn)考試復(fù)習(xí)題庫(附答案)
- 加油站安全生產(chǎn)責(zé)任制考核記錄
- 供應(yīng)鏈管理專業(yè)畢業(yè)生自我鑒定范文
評論
0/150
提交評論