国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

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

quietin / 590人閱讀

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

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

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

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

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

詳細(xì)分類(lèi)

工廠

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

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

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

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

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

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

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

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

過(guò)濾器模式,對(duì)對(duì)象的流式操作。參考jdk8的stream api

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

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

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

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

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

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

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

解釋器模式,

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

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

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

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

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

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

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

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

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

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

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

組合實(shí)體模式

數(shù)據(jù)訪問(wèn)對(duì)象模式

前端控制器模式

攔截過(guò)濾器模式

服務(wù)定位模式

傳輸對(duì)象模式

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/67796.html

相關(guān)文章

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

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

    Scorpion 評(píng)論0 收藏0
  • 【經(jīng)驗(yàn)分享】測(cè)試人員如何寫(xiě)總結(jié)

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

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

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

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

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

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

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

    he_xd 評(píng)論0 收藏0
  • 開(kāi)發(fā)必會(huì)的vim命令技巧總結(jié)

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

    dongfangyiyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<