成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

設(shè)計模式總結(jié)

quietin / 598人閱讀

摘要:,命令模式,將行為請求者和行為實現(xiàn)者解耦,將行為抽象為對象。解釋器模式,迭代器模式,將集合對象的存儲數(shù)據(jù)和遍歷數(shù)據(jù)職責(zé)分離。即將遍歷的責(zé)任交給迭代器返回的迭代器,迭代器。

設(shè)計模式總結(jié)

創(chuàng)建型:除了直接new來實例化對象外,提供了多種隱藏創(chuàng)建邏輯的生成對象的方法

結(jié)構(gòu)型:通過對象和類的組合,得到新的結(jié)構(gòu)和功能

行為型:解決對象之間的通行和功能職責(zé)分配

詳細(xì)分類

工廠

簡單工廠模式就是一個靜態(tài)工廠類,提供一個產(chǎn)品族,工廠通過傳入的產(chǎn)品類型參數(shù),決定實例化具體的產(chǎn)品。 (日志記錄器,依據(jù)保存地點生成對應(yīng)的日志記錄器)

工廠方法模式,一個產(chǎn)品對應(yīng)一個工廠,便于擴展新的產(chǎn)品,只需要增加新的產(chǎn)品子類和工廠子類就可以。

抽象工廠模式,引入產(chǎn)品樹,一個工廠實例對應(yīng)一系列產(chǎn)品。與工廠方法模式的區(qū)別就是,工廠方法只有一個產(chǎn)品接口,而抽象工廠有多個產(chǎn)品接口。(JDBC驅(qū)動)

單例模式 , 提供全局的一個唯一實例,避免頻繁的創(chuàng)建和銷毀。(序列號生成器,計數(shù)器),實現(xiàn)方式有懶漢式,餓漢式,雙重校驗鎖,靜態(tài)內(nèi)部類,枚舉

建造者模式,關(guān)注產(chǎn)品的組裝和次序。(快餐店基本食品相對固定,可以組裝出多種套餐)

原型模式,使用克隆的方法來生成對象。(類初始化西藥消耗較多資源時,比如在使用不可變類的時候,生成副本)

適配器模式,接口轉(zhuǎn)換。適配器其實更像個代理類,實現(xiàn)目標(biāo)接口,然后將目標(biāo)接口的方法轉(zhuǎn)給被適配的接口的方法。

橋接模式,就是原來通過派生子類來實現(xiàn)的變化改為組合的方式來實現(xiàn)。比如一個圖形類,實現(xiàn)兩個子類,一個畫紅圈,一個畫綠圈,改為抽取一個draw借口,實現(xiàn)兩個reddraw和greendraw類,原來的圖形類組合draw類

過濾器模式,對對象的流式操作。參考jdk8的stream api

組合模式。使用一個元素類型,形成一個樹結(jié)構(gòu),元素類型中包含自己元素數(shù)組域。

裝飾器模式,實現(xiàn)被裝飾類接口,并且代理被裝飾類的方法,在代理方法的同時加入裝飾代碼。實現(xiàn)方式和適配器差不多,不過目的不一樣,只不過適配器代理的是不兼容的接口,而裝飾器代理的是被裝飾接口

外觀模式,屏蔽復(fù)雜系統(tǒng),提供統(tǒng)一接口簡化客戶端調(diào)用。這個比較符合地米特最少知道法則。

享元模式。對象池,共享對象。比如線程池,連接池。同時也是一種緩存思想。

代理模式。spring aop,控制對象訪問。光看uml,和適配器,裝飾器非常像,區(qū)別在于應(yīng)用場景上。

責(zé)任鏈模式,參考tomcat的pipeline。每個責(zé)任鏈組件都持有者下一個組件的應(yīng)用,當(dāng)前組件處理方法之后調(diào)用下一個組件的處理方法。,

命令模式,將行為請求者和行為實現(xiàn)者解耦,將行為抽象為對象。還是以遙控器和電視機舉例子,按一般的使用思路,遙控器持有電視機實例,遙控器通過每個具體的方法來操作電視機。引入命令模式后,遙控器持有命令列表(這樣才能支持撤銷/恢復(fù)),命令持有電視機對象,一個命令對應(yīng)電視機一個操作,遙控器執(zhí)行命令即可,可作為遙控器的使用者,就往遙控器里面添加命令對象,遙控器執(zhí)行命令對象。

解釋器模式,

迭代器模式,將集合對象的存儲數(shù)據(jù)和遍歷數(shù)據(jù)職責(zé)分離?!坝糜陧樞蛟L問集合對象的元素,不需要知道集合對象的低層表示”,即你可以使用迭代器順序訪問hashtable的key,而不需要知道key在hashtable中是如何組織的。即將遍歷的責(zé)任交給迭代器(Hashtable返回的key迭代器,value迭代器)。設(shè)計上來說,迭代器類會是容器類的內(nèi)部類,生成的內(nèi)部類實例持有者外部類的引用。

中介者模式,解耦對象之間的交互(MVC中的C就是M和V的中介,消息中間件的訂閱)

備忘錄模式,類似savepoint。主要有三個角色:狀態(tài)類(單個savepoint),操作類(讀取或保存savepoint),狀態(tài)列表類(savepoint列表)

觀察者模式,事件分發(fā),異步。簡單的觀察者實現(xiàn)時維護狀態(tài)的對象持有并維護一個觀察者列表,狀態(tài)發(fā)生時逐個通知。不過現(xiàn)在較通用的是通過消息中間件的消息訂閱的方式,來通知變更。

狀態(tài)模式,將狀態(tài)抽象為類,形成一個狀態(tài)樹。改變狀態(tài)時,替換上下文中的狀態(tài)類,這樣上下文中,看起來,狀態(tài)改變時,行為也改變了。

空對象模式,提供空對象而不是Null。這個在實戰(zhàn)中比較有用,可以避免大量的是否等于NULL的判斷,比如流程申請頁面,第一次申請和退回到申請頁面,如果不是用空對象,頁面就要增加很多空判斷。如果使用空對象,則可以一致處理。

策略模式, 封裝算法,任意替換。實現(xiàn)上和狀態(tài)模式非常像。僅僅是抽象的對象不同,狀態(tài)模式抽象的是狀態(tài),策略模式抽象的是算法,都是通過替換上下文中對應(yīng)的類,來達(dá)到改變行為的目的。

模板模式,定義算法/流程骨架,一些步驟延遲到子類去實現(xiàn),由子類來定義算法的某個具體步驟。大多框架均適用模板模式,比如spring的容器實現(xiàn),或是tomcat的容器初始化,由上層定義通用過程,每一層的子類逐步完整整個骨架內(nèi)的步驟

訪問者模式,將數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作分離。BUT HOW?數(shù)據(jù)對象提供方法,接納訪問者對象,然后在訪問者對象的訪問方法中,將this傳入,這樣,在訪問者中,就可以訪問該類,并進行操作了。對一個對象可以提供多種不同行為的訪問者,這樣數(shù)據(jù)存儲和數(shù)據(jù)操作之間就解耦了。這種模式,在spring的bean初始化的時候有使用,將reader傳入factory,然后將this傳入reader,reader加載完beandefinition后,再將之添加進factory

MVC模式,M-業(yè)務(wù)模型,V-模型的展示,C-控制器。V可以簡單理解為業(yè)務(wù)模型對象的toString功能的解耦,通過控制層C,M和V進行關(guān)聯(lián)更新,新的狀態(tài)參數(shù)通過C傳給M,C將新的狀態(tài)發(fā)送給V。

業(yè)務(wù)代表模式,有四個角色,客戶端(client),業(yè)務(wù)代表(business delegate) , 查詢服務(wù)(lookup service), 業(yè)務(wù)服務(wù)(business service). 業(yè)務(wù)代表通過查詢服務(wù)得到具體的業(yè)務(wù)服務(wù)子類,向客戶端提供服務(wù)。

組合實體模式

數(shù)據(jù)訪問對象模式

前端控制器模式

攔截過濾器模式

服務(wù)定位模式

傳輸對象模式

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67796.html

相關(guān)文章

  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強)

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評論0 收藏0
  • 【經(jīng)驗分享】測試人員如何寫總結(jié)

    摘要:參與者項目經(jīng)理產(chǎn)品經(jīng)理開發(fā)經(jīng)理測試經(jīng)理及其它相關(guān)人員。項目上線后問題反饋針對項目客戶反饋問題進行分析總結(jié),類似缺陷分析,重點總結(jié)遺漏的原因及后需的規(guī)避措施。六匯總整理各部門總結(jié)并發(fā)布基于測試總結(jié)過程中的數(shù)據(jù)分析,我們提出了對部門的建議。 最近參與了幾次面試,面試者的簡歷中都會提及:需求或者...

    Vixb 評論0 收藏0
  • 【Vue項目總結(jié)】項目nginx部署

    摘要:項目開發(fā)完成,接下來是上線,關(guān)于項目的部署,我司前端是部署在服務(wù)器上,關(guān)于的相關(guān)文檔,請自行查閱本文只記錄部署時碰到的一些問題。其他總結(jié)文章常規(guī)打包優(yōu)化方案組件通信處理方案后臺管理項目總結(jié) 項目開發(fā)完成,接下來是上線,關(guān)于vue項目的部署,我司前端是部署在nginx服務(wù)器上,關(guān)于nginx的相關(guān)文檔,請自行查閱;本文只記錄部署時碰到的一些問題。 打包 vue項目打包后,是生成一系列的靜...

    CntChen 評論0 收藏0
  • javaScript高級程序設(shè)計腦圖總結(jié)

    摘要:高級程序設(shè)計總結(jié)學(xué)習(xí)了這么久,現(xiàn)在將書中的內(nèi)容做一個總結(jié),后期會慢慢把剩余的部分添加進來,歡迎大家高級程序設(shè)計總結(jié)操作符數(shù)據(jù)類型基本包裝類型單體內(nèi)置對象擴展 javaScript高級程序設(shè)計總結(jié) 學(xué)習(xí)了javaScript這么久,現(xiàn)在將書中的內(nèi)容做一個總結(jié),后期會慢慢把剩余的部分添加進來,歡迎大家starjavaScript高級程序設(shè)計總結(jié) 操作符 showImg(https://s...

    shusen 評論0 收藏0
  • 使用模式構(gòu)建系列總結(jié)

    摘要:在學(xué)習(xí)更多關(guān)于的知識和技能現(xiàn)在到了我們總結(jié)使用模式構(gòu)建系列的時候,這是一個很好的機會回顧一下這個系列涵蓋的模式所解決的問題,并著重復(fù)習(xí)每個模式所具有的一些好處以及做出的權(quán)衡。長期關(guān)注分布式系統(tǒng)及通用型數(shù)據(jù)庫技術(shù)。 在MongoDB University學(xué)習(xí)更多關(guān)于MongoDB的知識和技能 現(xiàn)在到了我們總結(jié)使用模式構(gòu)建系列的時候,這是一個很好的機會回顧一下這個系列涵蓋的模式所解決的問題...

    he_xd 評論0 收藏0
  • 開發(fā)必會的vim命令技巧總結(jié)

    摘要:工作中常用到的快捷鍵命令模式下操作行光標(biāo)處縮進,普通模式下向右縮進總結(jié)以上就是我認(rèn)為作為開發(fā)會經(jīng)常用到的操作,多聯(lián)系就可以熟練掌握啦 vim起源 showImg(https://segmentfault.com/img/remote/1460000016742520); 上圖可以清晰的看到早期的vim作者使用的機器,此時的終端機鍵盤是沒有獨立上下左右鍵位的,所以在vim的設(shè)計之初,HJ...

    dongfangyiyu 評論0 收藏0

發(fā)表評論

0條評論

quietin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<