學習JAVA快3個月了,感受了解的東西少之又少,用了幾天時間看了一點設計模式方面的知識,經過本身的理解寫了幾個,但願理解的八九不離十,我列舉幾個本身寫的例子程序員
設計場景設計方法都寫在裏面,就很少作介紹了設計模式
靜態代理設計模式:
分清楚各個角色之間的關係:
客戶-代理對象-真實對象架構
靜態代理設計場景:
1,客戶張三要經過海外代購買一雙耐克男士的41碼鞋子,張三確定去不了,因此經過尋找代理去幫他買
這裏的張三就是客戶,也就是發起請求的一方
2,代理獲得張三的信息以後,去往海外爲他購買他須要的鞋子
這裏的代理就是獲得張三請求的一方
3,真實對象就是海外的耐克鞋店
這裏的真實對象就是實現請求的一方,也稱之爲真實對象,也就是從這裏可以獲得張三所需求的鞋子學習
設計:
客戶類 Client(張三):調用對代理類的方法獲得鞋子
代理類proxyProple:從鞋子店獲得找到符合張三要求的鞋子而且代替張三先購買下來
鞋子接口:(由於鞋子款式尺碼有不少列舉了3種)1,尺碼。2,推薦性別,3,鞋子類型
鞋子實現:給了2種鞋子供參考 鞋子1 (耐克 41 碼 男士 boost)和 鞋子2(耐克 42碼 女士 air max)測試
類與類之間的關係:
鞋子類實現鞋子接口給出此款鞋子的特色
代理類經過獲得鞋子信息方法,將傳入的鞋子接口的方法調用設計
總結:其實不算完整,給張三的其實應該是張三直接所需求的鞋子,這裏只是將鞋子的信息給了張三
目的是爲了瞭解這之間的過程3d
下面是代碼:代理
運行結果server
上面就是我對靜態代理的理解,可能還有不少錯誤和不足的地方,就等到之後本身去完善了對象
策略設計模式:
爲了讓代碼有複用性,避免一次性代碼,使總體的耦合度下降
策略設計模式基本設計方法:
1,靈活的運用繼承
2,靈活運用接口
繼承的優勢:增長代碼的複用性
缺點:耦合度高,一旦超類添加了一個新方法,子類都會擁有此方法,超類修改了此方法的時候,子類須要批量修改,增長了代碼量
子類繼承超類以後,就沒法繼承其餘類
接口的優勢:將須要實現的類的方法封裝,解決了高耦合度的問題
缺點:不可以達到代碼複用
策略模式:解決接口不能達到代碼複用的缺點
策略設計模式場景:
有一個狗類(超類):
子類統一的行爲:吃食物
狗能叫:旺旺叫,嘰嘰叫
狗能跑:跑的快,跑的慢
用策略設計模式使得這個狗類更具備擴展性
黃狗:跑的快,旺旺叫
白狗:跑的慢,嘰嘰叫
總結:
策略設計模式應用的不少,下降了耦合度,使得代碼複用性更高,多個接口的建立,鬆了耦合,接口都有本身的實現類提升了內聚
每個都對各層互不影響
下面是代碼
運行結果:
觀察者設計模式:
應用很是普遍的一種設計模式
功能:
爲每個用戶都提供了一個監聽,當有事件觸發時,將信息傳達給每個監聽着的用戶
觀察者模式場景:
相似於QQ羣消息或者公告
當一個用戶發送一則消息,或者管理員發送一則公告的時候其餘全部用戶都可以收到
此時全部用戶都是處於監聽狀態
設計:
2個角色:1,觀察者,2,被觀察者
這裏觀察者一般爲用戶,可是也免不了是其餘應用之類的
被觀察者這裏就是消息
1,被觀察者接口,3種抽象方法,註冊(param:Oberver),移除(param:Observer),通知(param:null)
2,被觀察者類 Message 成員變量:Message msg(消息) List<Oberver> observers
提供了 對用戶的控制,註冊 移除 通知,這是被觀察者的功能的實現
3,觀察者接口 Obersrver 提供了修改消息的功能,修改消息的時候就等同於發送消息
4,用戶類,成員變量:name(姓名) 對觀察者接口的方法實現
流程:
進來3個用戶,可是並無完成註冊,此時創建一個被觀察對象,將3個用戶註冊,此時3個用戶就處於監聽狀態
一旦當消息被修改的時候,3個用戶都將收到此消息
責任鏈場景:程序設計
1,架構師對系統架構
2,高級工程師項目進行設計
3,項目經理對項目進行分配
4,程序員編寫代碼
--------------------------------------------------
需求:
項目分ABC三個等級,A等架構師須要5秒完成架構,B等架構師須要3秒,C等1秒
A等高級工程師須要3秒鐘完成 B 2秒 C 1秒
項目經理A 3 ,B 2 ,C 1
程序員 A 5,B 3,C 1
---------------------------------------------------
責任鏈模式:
MainHanderChain 類:
此類包括其下面全部須要實現全部方法
可是每個類只能實現它本身可以實現的方法。
--------------------------------------------------
補充:
當項目等級在A的時候須要架構師架構
當項目等級在B的時候架構師不參與,高級工程師參與第一項設計
當項目等級在C的時候架構師,高級工程師不參與,項目經理參與第一項設計
總結:
責任鏈可以有效的分配任務,提升效率,並且在一般設計中看不到是誰對任務進行了調度,這裏用了4我的物爲了直觀的顯示進行過程
可以動態的爲不一樣的任務分配不一樣的類來進行
測試A等級結果:
測試B等級結果:
測試C等級結果:
這些存粹是我本身的理解,慢慢學習以後確定會有更好的方法來解決。