熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

經典:從追MM談Java的23種設計模式[2]

2013-11-23 19:58:42  來源: Java高級技術 

  橋梁模式將抽象化與實現化脫耦使得二者可以獨立的變化也就是說將他們之間的強關聯變成弱關聯也就是指在一個軟件系統的 抽象化和實現化之間使用組合/聚合關系而不是繼承關系從而使兩者可以獨立的變化

  COMPOSITE—Mary今天過生日我過生日你要送我一件禮物好吧去商店你自己挑這件T恤挺漂亮這 條裙子好看這個包也不錯買了三件了呀我只答應送一件禮物的哦什麼呀T恤加裙子加包包正好配成一套呀 小姐麻煩你包起來……MM都會用Composite模式了你會了沒有?

    合成模式合成模式將對象組織到樹結構中可以用來描述整體與部分的關系合成模式就是一個處理對象的樹結構的模式合成 模式把部分與整體的關系用樹結構表示出來合成模式使得客戶端把一個個單獨的成分對象和由他們復合而成的合成對象同等看待

  DECORATOR—Mary過完輪到Sarly過生日還是不要叫她自己挑了不然這個月伙食費肯定玩完拿出我去年在華山頂上照的照片 在背面寫上最好的的禮物就是愛你的Fita再到街上禮品店買了個像框(賣禮品的MM也很漂亮哦)再找隔壁搞美術設計的Mike設計了一 個漂亮的盒子裝起來……我們都是Decorator最終都在修飾我這個人呀怎麼樣看懂了嗎?

    裝飾模式裝飾模式以對客戶端透明的方式擴展對象的功能是繼承關系的一個替代方案提供比繼承更多的靈活性動態給一個 對象增加功能這些功能可以再動態的撤消增加由一些基本功能的排列組合而產生的非常大量的功能

  FAÇADE—我有一個專業的Nikon相機我就喜歡自己手動調光圈快門這樣照出來的照片才專業但MM可不懂這些教了半天也 不會幸好相機有Façade設計模式把相機調整到自動檔只要對准目標按快門就行了一切由相機自動調整這樣MM也可以用這個相機給我 拍張照片了

    門面模式外部與一個子系統的通信必須通過一個統一的門面對象進行門面模式提供一個高層次的接口使得子系統更易於使用 每一個子系統只有一個門面類而且此門面類只有一個實例也就是說它是一個單例模式但整個系統可以有多個門面類

  FLYWEIGHT—每天跟MM發短信手指都累死了最近買了個新手機可以把一些常用的句子存在手機裡要用的時候直接拿出來 在前面加上MM的名字就可以發送了再不用一個字一個字敲了共享的句子就是FlyweightMM的名字就是提取出來的外部特征根據上下文 情況使用

    享元模式FLYWEIGHT在拳擊比賽中指最輕量級享元模式以共享的方式高效的支持大量的細粒度對象享元模式能做到共享的關 鍵是區分內蘊狀態和外蘊狀態內蘊狀態存儲在享元內部不會隨環境的改變而有所不同外蘊狀態是隨環境的改變而改變的外蘊狀態不能 影響內蘊狀態它們是相互獨立的將可以共享的狀態和不可以共享的狀態從常規類中區分開來將不可以共享的狀態從類裡剔除出去客戶 端不可以直接創建被共享的對象而應當使用一個工廠對象負責創建被共享的對象享元模式大幅度的降低內存中對象的數量

  PROXY—跟MM在網上聊天一開頭總是hi你好你從哪兒來呀?你多大了?身高多少呀?這些話真煩人寫個程序 做為我的Proxy吧凡是接收到這些話都設置好了自動的回答接收到其他的話時再通知我回答怎麼樣酷吧

    代理模式代理模式給某一個對象提供一個代理對象並由代理對象控制對源對象的引用代理就是一個人或一個機構代表另一個 人或者一個機構采取行動某些情況下客戶不想或者不能夠直接引用一個對象代理對象可以在客戶和目標對象直接起到中介的作用客戶 端分辨不出代理主題對象與真實主題對象代理模式可以並不知道真正的被代理對象而僅僅持有一個被代理對象的接口這時候代理對象不 能夠創建被代理對象被代理對象必須有系統的其他角色代為創建並傳入

以下是引用片段
    public interface FactoryProxy{
      public People createBoy();
       public People creteGirl();
    }

  CHAIN OF RESPONSIBLEITY—晚上去上英語課為了好開溜坐到了最後一排前面坐了好幾個漂亮的MM哎找張紙條寫上 Hi可以做我的女朋友嗎?如果不願意請向前傳紙條就一個接一個的傳上去了糟糕傳到第一排的MM把紙條傳給老師了聽說是個老處 女呀快跑!

    責任鏈模式在責任鏈模式中很多對象由每一個對象對其下家的引用而接

    起來形成一條鏈請求在這個鏈上傳遞直到鏈上的某一個對象決定處理此請求客戶並不知道鏈上的哪一個對象最終處理這個請 求系統可以在不影響客戶端的情況下動態的重新組織鏈和分配責任處理者有兩個選擇承擔責任或者把責任推給下家一個請求可以最終 不被任何接收端對象所接受

  COMMAND—俺有一個MM家裡管得特別嚴沒法見面只好借助於她弟弟在我們倆之間傳送信息她對我有什麼指示就寫一張紙條 讓她弟弟帶給我這不她弟弟又傳送過來一個COMMAND為了感謝他我請他吃了碗雜醬面哪知道他說我同時給我姐姐三個男朋友送 COMMAND就數你最小氣才請我吃面

    命令模式命令模式把一個請求或者操作封裝到一個對象中命令模式把發出命令的責任和執行命令的責任分割開委派給不同的 對象命令模式允許請求的一方和發送的一方獨立開來使得請求的一方不必知道接收請求的一方的接口更不必知道請求是怎麼被接收以 及操作是否執行何時被執行以及是怎麼被執行的系統支持命令的撤消

[]  []  []  


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27762.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.