設計模式(35)-----設計模式階段性總結(一句話概括一個模式)
目錄:
設計模式要從語義上出發,而不要從語法上出發,其實設計模式歸根結底就是多型的有計劃的組合。
設計模式(2)------行為型模式------觀察者設計模式
想想氣象站,根據天氣的變化動態的通知觀眾實時天氣。當一個物件的狀態改變時,通知另一個物件作出相應的改變,而中間的觀察和通知者就是主要的觀察者設計模式。出版者+訂閱者=觀察者模式
設計模式(3)------行為型模式------觀察者設計模式(jdk自帶)
設計模式(4)------結構型模式------裝飾者設計模式
想想inputStream它的鋪天蓋地的包裝類。加一層包裝就多一個功能。
設計模式(5)------結構型模式-----裝飾者設計模式(IO流的應用)
設計模式(6)------結構型模式------裝飾者設計模式(案例補充)
設計模式(7)-----建立型模式-----工廠設計模式(簡單工廠設計模式)
設計模式(8)-----建立型模式----- 工廠設計模式(工廠模式)
想想spring建立bean物件。一個產品類對應著一個產品工廠類。
設計模式(9)----- 建立型模式-----工廠設計模式(抽象工廠模式)
想想spring建立bean物件。一組產品對應著一個產品工廠類
設計模式(9)----- 補充spring中的工廠設計模式(手寫IOC容器)
設計模式(10)-----建立型模式----- 單例設計模式
想想springmvc的單例設定。記憶體中永遠有一個物件。
設計模式(12)----- 行為型模式-----命令設計模式(升級----一個開關控制多條命令)
設計模式(13)----- 行為型模式-----命令設計模式(升級----加一個撤銷的命令)
設計模式(14)----- 行為型模式-----命令設計模式(升級----一個命令物件執行多條命令)
就是讓請求者和執行者之間解耦,主要通過命令來呼叫相應的動作。
最基本的設計模式,就是在演算法之間隨意的切換,主要是多型。
設計模式(16)-----結構型模式-----介面卡設計模式
在實現了介面的內部呼叫其它的方法。偷換概念
就是留一個方法,統一呼叫裡面一組的資料。有點類似於抽象工廠設計模式。
其實和外觀有點像,只不過模板沒有外觀那麼簡潔,可能4個方法是一套流程,但是隻有兩個是用模板的。
設計模式(19)-----行為型模式-----迭代器設計模式
可以迭代不同資料結構的資料。
想想選單和選單項
每個狀態對應著不同的行為(類或者方法)
設計模式(22)-----結構型模式-----代理設計模式-----靜態代理
設計模式(23)-----結構型模式-----代理設計模式-----動態代理
找中介來處理這個問題。有點類似於中介模式。
設計模式(24)-----行為型模式-----責任鏈模式-----攔截器設計模式
想想攔截器,一層層的攔截就是責任鏈模式。
就是clone
就是把建立複雜的物件簡單化
通過過濾器可以吧想要的資訊過來過阿里,就是一個過濾器而已。
減少建立物件的數目,它和單例不一樣的地方就是無論如何,記憶體中就一個物件這事單例,一個物件假如根據某個屬性來判斷是不是相同的話,可能呼叫了20次只建立了5個物件。
設計模式(29)-----行為型模式-----直譯器設計模式
是不是?是或者不是
設計模式(30)-----行為型模式-----中介者設計模式
假如現在有100個物件,他們互相之間都有聯絡,通過中介模式讓他們去掉聯絡,所有的聯絡都指向中介,這樣會條理清晰許多。
設計模式(31)-----行為型模式-----備忘錄設計模式
想想ctr+z,對以前操作的資訊做一個保留,比如存到map中或者list中,想去找到以前操作的資訊的話直接去取就行了
設計模式(32)-----行為型模式-----空物件設計模式
假如不為空到一個類中,假如為空到另一個類中,空和非空都實現相同的介面。但是相同的方法裡面處理的邏輯不一樣。
設計模式(33)-----行為型模式-----訪問者設計模式
想想許可權就行了,不同的訪問者可以設定不同的方法
主要是兩個層面的物件隨機的組合。比如說男生,女生一個層面,結婚,單身另一個層面,兩個層面可以隨機的組合。