




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、份培訓設計模式PPT課件本章目標本章目標 了解23種設計模式 掌握常用幾種設計模式 設計模式簡介 單例模式 工廠模式 代理模式 適配器模式主要內容主要內容設計模式設計模式Design Patterns: Elements of Reusable Object-Oriented Software( Gang of Four(GOF)95是軟件模式的開創性著作用來解決代碼復用,避免程序大量修改的一些成熟的套路或者方法用了設計模式會使項目復雜度增加,開發成本增加,但維護成本降低,靈活性更好,擴展性更強創建類型的模式( Creational )結構類型的模式( Structural )行為類型的模式(
2、 Behavioral )創建類型的模式創建類型的模式 創建類型的模式如何有效地創建類的實例 單例模式(Singleton) 構建模式(Builder) 原型模式(Prototype) 簡單工廠模式(Simple Factory) 抽象工廠模式(Abstract Factory) 工廠方法模式(Factory Method)結構類型的模式結構類型的模式 結構類型的模式將類與對象組合起來,以構成更加復雜的結構 ,幫助開發人員將簡單對象組合在一起形成更加復雜的結構,處理對象與對象之間的各種關系 代理模式(Proxy) 適配器模式(Adapter) 裝飾者模式(Decorator) 組合模式(Com
3、posite) 橋連接模式(Bridge) 蠅量模式(Flyweight) 外觀模式(Facade)行為類型的模式行為類型的模式 行為類型的模式主要是處理對象之間通訊的模式 , 幫助開發人員控制類之間的通訊 策略模式(Strategy) 狀態模式(State) 責任鏈模式(Chain of Responsibility) 解釋器模式(Interpreter) 命令模式(Command) 觀察者模式(Observer) 備忘錄模式(Memento) 迭代器模式(Iterator) 模板方法模式(Template Method) 訪問者模式(Visitor) 中介者模式(Mediator)設計原則
4、設計原則 邏輯代碼獨立到單獨的方法中,注重封裝性-易讀,易復用。不要在一個方法中,寫下上百行的邏輯代碼。把各小邏輯代碼獨立出來,寫于其它方法中,易讀,可重復調用。模塊間松耦合、模塊內緊耦合。 熟練運用繼承的思想:找出應用中相同之處,且不容易發生變化的東西,把它們抽取到抽象類中,讓子類去繼承它們; 熟練運用接口的思想:找出應用中可能需要變化之處,把它們獨立出來,不要與那些不需要變化的代碼混在一起。 繼承與接口繼承與接口 不管黑貓白貓,只要抓得到老鼠,都是好貓 貓:抓老鼠、叫、顏色各異 第一種方法:(一次性代碼)直接編寫出各種貓的類,各類有三個方法:quack():叫catch():抓老鼠 dis
5、play():顏色 貓的共性:抓老鼠、叫、 貓的個性:顏色(黑白) 黑貓、白貓 運用繼承運用繼承public class Cat public void quack() /呱呱叫 System.out.println(“呱呱叫”); public void catch() /抓老鼠 System.out.println(“抓老鼠); public abstract void display();/*因為外觀不一樣,讓子類自己去決定了。*/對于它的子類只需簡單的繼承就可以了,并實現自己的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(“黑貓.); 運用接口運用接口public class Cat public void quack() /呱呱叫 System.out.println(“呱呱叫”); public abstratact void display();/*因為外觀不一樣,讓子類自己去決定了。*/public interface ICatch public void ca
7、tch();/白貓public class WhiteCat extends Cat implements ICatch public void display() System.out.println(“白貓的顏色.”); public void catch() /實現該方法 /黑貓public class BlackCat extends Cat/ implements ICatch public void display() System.out.println(“黑貓的顏色.); 小結小結 繼承的好處:讓共同部分,可以復用.避免重復編程. 繼承的不好:耦合性高.一旦超類添加一個新方法,
8、子類都繼承,擁有此方法,若子類相當部分不實現此方法,則要進行大批量修改.繼承時,子類就不可繼承其它類了. 接口的好處:解決了繼承耦合性高的問題.且可讓實現類,繼承或實現其它類或接口. 接口的不好:不能真正實現代碼的復用.SINGLETONSINGLETON模式模式 概念:單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例。單例模式只應在有真正的“單一實例”的需求時才可使用 場景:讀取配置文件、Socket鏈接、數據庫資源等publicclassSingletonAprivatestaticSingletonAs;publicstaticSingletonAgetInsta
9、nce()if(s=null)s=newSingletonA();returns;SingletonAsingle=SingletonA.getInstance();簡單工廠模式簡單工廠模式 概念:簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。 工廠(Creator)角色 :簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類可以被外界直接調用,創建所需的產品對象。 抽象產品(Product)角色 :簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。 具體產品(Concrete Product)角色:是簡單工廠模式的創建目標,所有創建的對象都是充當這個
10、角色的某個具體類的實例。 實例實例 見實例。簡單工廠模式簡單工廠模式 優點:通過使用工廠類,外界可以從直接創建具體產品對象的尷尬局面擺脫出來,僅僅需要負責“消費”對象就可以了。而不必管這些對象究竟如何創建及如何組織的 缺點:它所能創建的類只能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。 思考思考 女媧造人:幫我造個叫張三的人吧!抽象工廠模式抽象工廠模式 概念:抽象工廠模式可以向客戶端提供一個接口,使得客戶端在不必指定產品具體類型的情況下,創建多個產品族中的產品對象。這就是抽象工廠模式的用意。 抽象工廠(Creator)角色 具體工廠(Concrete Creator)角色 抽象產
11、品(Product)角色 具體產品(Concrete Product)角色抽象工廠模式抽象工廠模式 抽象工廠模式面對的問題是多產品等級結構的系統設計 學習抽象工廠具體實例之前,應該明白兩個重要的概念:產品族與產品等級。 產品族:是指位于不同產品等級結構中,功能相關聯的產品組成的家族。比如AMD的CPU與AMD芯片的主板,組成一個家族。Intel的CPU與Intel芯片的主板,又組成一個家族。而這兩個家族都來自于兩個產品等級:CPU,主板。一個等級結構是由相同的結構的產品組成,示意圖如下:實例實例 農場主引進塑料大棚技術,在大棚里種植熱(Tropical)與亞熱帶(Northern)的水果(Fr
12、uit)與蔬菜(Veggie),用以滿足市場需求,獲取更大的利益 實例實例生產水果生產蔬菜實例實例 見實例。抽象工廠模式抽象工廠模式 創建同使用分開 降低耦合度 可擴展性思考思考 女媧造人:陰繩女人或雌獸;陽繩男人或雄獸;甩出來泥土像人型即造人類,像獸類則造野獸。代理模式代理模式 概念:對其他對象提供一種代理以控制對這個對象的訪問。 好處:-是可以在間接訪問對象的同時,要其前或后,添加其它的邏輯代碼。 -對原來邏輯進行添加其它邏輯,最終生成新的邏輯。即:對類的方法添加一些額外的邏輯,生成新的方法邏輯。靜態代理靜態代理 靜態代理: -一個原類與一個代理類要一一對應。-兩者都實現共同的接口或繼承相
13、同的抽象類;-只是在代理類中,實例化原類,在原類方法的前后添加新的邏輯。實例實例 見實例。動態代理動態代理 動態代理: Java動態代理類位于Java.lang.reflect包下,一般主要涉及到以下兩個類:1)Interface InvocationHandler:該接口中僅定義了一個方法:invoke(Object obj,Method method, Object args) obj一般是指代理類,method是被代理的方法,args為該方法的參數數組。這個抽象方法在代理類中動態實現。2)Proxy:該類即為動態代理類,其中主要包含以下內容:Static Object newProxyInstance(ClassLoader loader, Class interfaces, InvocationHandler h):返回代理類的一個實例,返回后的代理類可以當作被代理類使用。所謂Dynamic Proxy是這樣一種class:它是在運行時生成的class,在生成它時你必須提供一組interface給它,然后該class就宣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校母嬰室管理制度
- 學校類設備管理制度
- 學校鍋爐工管理制度
- 學生手衛生管理制度
- 安培訓教學管理制度
- 安裝小班組管理制度
- 官方自媒體管理制度
- 實施不閉環管理制度
- 實驗室控制管理制度
- 客服全流程管理制度
- 2025年四川省成都市中考語文真題(解析版)
- 北京市2024年高招本科普通批錄取投檔線
- 2024-2025學年人教版數學八年級下冊期末復習卷(含解析)
- 2025年黑龍江、吉林、遼寧、內蒙古高考物理真題(解析版)
- 民航招飛初選試題及答案
- 2025年電子商務法律法規考試試題及答案
- 國開2025年《資源與運營管理》形考任務1-4答案
- 2025年安全生產考試題庫(危險化學品安全)危險化學品安全操作規范應用試題
- T/CIQA 74-2024人工智能(AI)鑒定通用規范
- 美容院洗滌協議書
- 學習解讀《水利水電建設工程驗收規程》SLT223-2025課件
評論
0/150
提交評論