設計模式學習總結系列應用實例

1.單例模式
應用實例:1.一個黨只能有一個主席.2.Windows是多進程多線程的,在操作一個文件的時候,就不可避免地出現多個進程或線程同時操作一個文件的現象,所以所有文件的處理必須通過唯一的實例來進行。3.一些設備管理器常常設計爲單例模式,比如一個電腦有兩臺打印機,在輸出的時候就要處理不能兩臺打印機打印同一個文件。
2.工廠模式
應用實例:1.你需要一輛汽車,你可以直接從工廠裏面提貨,而不用去管這輛汽車是怎麼做出來的,以及這個汽車裏面的具體實現 2.Hibernate換數據庫只需換方言和驅動就可以
3.抽象工廠
應用實例:工作了,爲了參加一些聚會,肯定有兩套或多套衣服吧,比如說有商務裝(成套,一系列具體產品)、時尚裝(成套,一系列具體產品),甚至對於一個家庭來說,可能有商務女裝、商務男裝、時尚女裝、時尚男裝,這些也都是成套的,即一系列具體產品.咱們假設一種情況(現實中是不存在的,要不然,沒法進入共產主義了,但有利於說明抽象工廠模式),在你的家中,某一個衣櫃(具體工廠)只能存放某一種這樣的衣服(成套,一系列具體產品),每次拿這種成套的衣服時也自然要從這個衣櫃中取出了.用OO的思想去理解,所有的衣櫃(具體工廠)都是衣櫃類的(抽象工廠)某一個,而每一件成套的衣服又包括具體的上衣(某一具體產品),褲子(某一具體產品),這些具體的上衣其實也都是上衣(抽象產品),具體的褲子也都是褲子(另一個抽象產品).
4.建造者模式
應用實例:1.去肯德基,漢堡,可樂,薯條,炸雞翅等是不變的,而其組合是經常變化的,生成出所謂的“套餐”2.JAVA中的StringBuilder
5.原型模式
應用實例:1.細胞分裂 2.JAVA中的Object clone()方法
6.適配器模式
應用實例:1.美國電器110V,中國220V,就要有一個適配器將110V轉化爲220V 2.JAVA JDK 1.1提供了Enumeration接口,而在1.2中提供了Iterator接口,想要使用1.2 的JDK,則要將以前系統的Enumeration接口轉化爲Iterator接口,這時就需要適配器模式 3.在LINUX上運行WINDOWS程序 4.java中的jdbc
7.組合模式
應用實例:1.算術表達式包括操作數、操作符和另一個操作數,其中,另一個操作符也可以是操作樹,操作符和另一個操作數 2.在JAVA AWT和SWING中,對於Button和Checkbox是樹葉,Container是樹枝
8.裝飾模式
應用實例:1.孫悟空有72變,當他變成“廟宇”後,他的根本還是一隻猴子,但是他又有了廟宇的功能 2.不論一幅畫有沒有畫框都可以掛在牆上,但是通常都是有畫框的,並且實際上是畫框被掛在牆上。在掛在牆上之前,畫可以被蒙上玻璃,裝到框子裏;這時畫、玻璃和畫框形成了一個物體。
9.代理模式
應用實例:1.windows裏面的快捷方式 2.豬八戒去找高翠蘭結果是孫悟空變的,可以這樣理解:把高翠蘭的外貌抽象出來,高翠蘭本人和孫悟空都實現了這個接口,豬八戒訪問高翠蘭的時候看不出來這個是孫悟空,所以說孫悟空是高翠蘭代理類。3.買火車票票不一定在火車站買,也可以去代售點 4.一張支票或銀行存單是賬戶中資金的代理。支票在市場交易中用來代替現金,並提供對簽發人賬號上資金的控制。 5.spring aop
10.享元模式
應用實例:1.JAVA中的String,如果有則返回,如果沒有則創建一個字符串保存在字符串緩存池裏面 2.數據庫的數據池
11.門面模式
應用實例:1.去醫院看病,可能要去掛號、門診、劃價、取藥,讓患者或患者家屬覺得很複雜,如果有提供接待人員,只讓接待人員來處理,就很方便 2.JAVA的三層開發模式
12.橋接模式
應用實例:1、豬八戒從天蓬元帥轉世投胎到豬,轉世投胎的機制將塵世劃分爲兩個等級,即:靈魂和肉體,前者相當於抽象化,後者相當於實現化。生靈通過功能的委派,調用肉體對象的功能,使得生靈可以動態的選擇 2、牆上的開關,自己可以看到的開關是抽象的,裏面具體怎麼實現我們不管 
13.策略模式
應用實例:1、諸葛亮的錦囊妙計,每一個錦囊就是一個策略 2、旅行的出遊方式,選擇騎自行車、坐汽車每一種旅行方式都是一個策略 3、JAVA AWT中的LayoutManager
14.模板方法模式
應用實例:1、在造房子的時候,地基、走線、水管都一樣,只有在建築的後期纔有加壁櫥加柵欄等差異  2、西遊記裏面菩薩定好的81難,這就是一個頂層的邏輯骨架 3、Spirng中對Hibernate的支持,將一些已經定好的方法封裝起來,比如開啓事務、獲取Session、關閉Session等,程序員不重複寫那些已經規範好的代碼,直接丟一個實體就可以保存
15.觀察者模式
應用實例:1、拍賣的時候,拍賣師觀察最高標價,然後通知給其他競價者競價 2、西遊記裏面悟空請求菩薩降服紅孩兒,菩薩灑了一地水招來一個老烏龜,這個烏龜就是觀察者,他觀察菩薩灑水這個動作
16.迭代器模式
應用實例:JAVA中的iterator
17.責任鏈模式
應用實例:1、紅樓夢中的“擊鼓傳花”2、JS中的事件冒泡 3、JAVA WEB中 Apache Tomcat 的對Encoding的 處理,Struts2 的攔截器, jsp servlet 的Filte
18.命令模式
應用實例:struts  1中的action 核心控制器ActionServlet只有一個,相當於Invoker,而模型層的類會隨着不同的應用有不同的模型類,相當於具體的Command
19.備忘錄模式
應用實例:1、後悔藥 2、打遊戲時的存檔 3、Windows裏的ctri + z  4、IE中的後退 4、數據庫的事務管理 5、WEB中的SESSION和COOKIE 6、孫悟空將人蔘樹推到,後求助於觀音,觀音撒了幾滴水,數九附後了,其中孫悟空是發起人,人蔘樹是具體對象(Originator),那幾滴水是備忘錄角色(Memento),觀音是負責人角色(Caretaker)
20.狀態模式
應用實例:1、打籃球的時候運動員可以有正常狀態,不正常狀態,和超常狀態 2、曾侯乙編鐘中,‘鍾是抽象接口’,‘鍾A’等是具體狀態,'曾侯乙編鐘'是具體環境(Context)
21.訪問者模式
應用實例:你在朋友家做客,你是訪問者,朋友接受你的訪問,你通過朋友的描述,然後對朋友的 描述做出一個判斷,這就是訪問者模式
22.解釋器模式
應用實例:編譯器、運算表達式計算
23.中介者模式
應用實例:1 、中國加入WTO,之前是各個國家相互貿易,結構複雜,現在是各個通過WTO來互相貿易 2、機場調度系統 3、 MVC框架,其中C(控制器)就是M和V的中介者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章