成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從 JDK 中,我們能學(xué)到哪些設(shè)計(jì)模式?

新聞 前端
看完本篇,面試問道設(shè)計(jì)模式就不用再支支吾吾地說...單例工廠了!

結(jié)構(gòu)性模式:

適配器模式:

常用于將一個(gè)新接口適配舊接口

肥朝小聲逼逼:在我們業(yè)務(wù)代碼中經(jīng)常有新舊接口適配需求,可以采用該模式。

橋接模式:

將抽象和抽象的具體實(shí)現(xiàn)進(jìn)行解耦,這樣可以使得抽象和抽象的具體實(shí)現(xiàn)可以獨(dú)立進(jìn)行變化。

肥朝小聲逼逼:這個(gè)模式,其實(shí)我們每天都在用到,但是你可能卻渾然不知。只要你用到面向接口編程,其實(shí)都是在用橋接模式。

組合模式

讓客戶端看起來在處理單個(gè)對(duì)象和對(duì)象的組合是平等的,換句話說,某個(gè)類型的方法同時(shí)也接受自身類型作為參數(shù)。(So in other words methods on a type accepting the same type)

肥朝小聲逼逼:從上面那句英文我們就可以得知,組合模式常用于遞歸操作的優(yōu)化上,比如每個(gè)公司都有個(gè)boss系統(tǒng),都會(huì)有什么菜單的功能。比如一級(jí)菜單下有二級(jí)菜單,二級(jí)菜單又有三級(jí)菜單。刪除一級(jí)菜單的時(shí)候需要不斷刪除子菜單,那么這個(gè)設(shè)計(jì)模式你可以試試。總之,凡是有級(jí)聯(lián)操作的,你都可以嘗試這個(gè)設(shè)計(jì)模式。

裝飾者模式

動(dòng)態(tài)的給一個(gè)對(duì)象附加額外的功能,因此它也是子類化的一種替代方法。該設(shè)計(jì)模式在JDK中廣泛運(yùn)用,以下只是列舉一小部分

肥朝小聲逼逼:這個(gè)模式使用就太廣了,我們常用的AOP,既有動(dòng)態(tài)代理,也有裝飾者的味道。

門面模式

為一組組件,接口,抽象或子系統(tǒng)提供簡(jiǎn)化的接口。

肥朝小聲逼逼:我們每天使用的SLFJ日志就是門面日志,比如我們使用Dubbo,向外提供的服務(wù)就盡量采用門面模式,然后服務(wù)在調(diào)用各種service做聚合。

享元模式

使用緩存來減少對(duì)小對(duì)象的訪問時(shí)間

肥朝小聲逼逼:只要用到了緩存,基本都是在使用享元模式。很多同學(xué)都說自己的項(xiàng)目太low了,都沒有用到什么設(shè)計(jì)模式,這不是開玩笑嗎,你用個(gè)map緩存幾個(gè)對(duì)象,基本上都運(yùn)用了享元的思想。

代理模式

代理模式用于向較簡(jiǎn)單的對(duì)象代替創(chuàng)建復(fù)雜或耗時(shí)的對(duì)象。

肥朝小聲逼逼:代理模式用得很廣泛,基本所有大家知道的開源框架,都用到了動(dòng)態(tài)代理。

創(chuàng)建模式

抽象工廠模式

抽象工廠模式提供了一個(gè)協(xié)議來生成一系列的相關(guān)或者獨(dú)立的對(duì)象,而不用指定具體對(duì)象的類型。它使得應(yīng)用程序能夠和使用的框架的具體實(shí)現(xiàn)進(jìn)行解耦。在JDK和許多開源框架,比如Spring中隨處可見,它們很容易被發(fā)現(xiàn)。任何用于創(chuàng)建對(duì)象但返回接口或抽象類的,就是抽象工廠模式了。(any method that is used to create an object but still returns a interface or abstract class)

肥朝小聲逼逼:從英文就可以得出,該模式可以與策略模式結(jié)合使用。

建造者模式

用于通過定義一個(gè)類來簡(jiǎn)化復(fù)雜對(duì)象的創(chuàng)建,該類的目的是構(gòu)建另一個(gè)類的實(shí)例。構(gòu)建器模式還允許實(shí)現(xiàn)Fluent接口。

肥朝小聲逼逼:這個(gè)在我們業(yè)務(wù)代碼中使用的場(chǎng)景太廣泛了。比如訂單系統(tǒng)大部分項(xiàng)目都有,訂單對(duì)象就是一個(gè)復(fù)雜對(duì)象,我們就可以采用建造者模式來做。

工廠方法

只是一個(gè)返回實(shí)際類型的方法。

肥朝小聲逼逼:這個(gè)屬于大家都會(huì)的設(shè)計(jì)模式,不多過介紹。

原型模式

使得類的實(shí)例能夠生成自身的拷貝。如果創(chuàng)建一個(gè)對(duì)象的實(shí)例非常復(fù)雜且耗時(shí)時(shí),就可以使用這種模式,而不重新創(chuàng)建一個(gè)新的實(shí)例,你可以拷貝一個(gè)對(duì)象并直接修改它。

肥朝小聲逼逼:這個(gè)你以為是冷門的設(shè)計(jì)模式,其實(shí)錯(cuò)了,這個(gè)是大熱門的設(shè)計(jì)模式。比如我們業(yè)務(wù)代碼,經(jīng)常要各種DTO、BO、DO、VO轉(zhuǎn)換,其實(shí)就可以參考原型設(shè)計(jì)模式的思想來做。

單例模式

用來確保類只有一個(gè)實(shí)例。Joshua Bloch在Effetive Java中建議到,還有一種方法就是使用枚舉。

肥朝小聲逼逼:在平時(shí)開發(fā)中,單例是我們用得最多的了,因?yàn)镾pring的bean,默認(rèn)就是單例級(jí)別的。單例屬于大家基本都會(huì)的設(shè)計(jì)模式。

行為模式

責(zé)任鏈

通過把請(qǐng)求從一個(gè)對(duì)象傳遞到鏈條中下一個(gè)對(duì)象的方式來解除對(duì)象之間的耦合,直到請(qǐng)求被處理完畢。鏈中的對(duì)象是同一接口或抽象類的不同實(shí)現(xiàn)。

肥朝小聲逼逼:凡是帶有 Filter 關(guān)鍵詞的,基本都在用這個(gè)設(shè)計(jì)模式。在業(yè)務(wù)代碼使用的場(chǎng)景實(shí)在是太多了,用到攔截器的地方基本都在用這個(gè)設(shè)計(jì)模式。

命令模式

將命令包裝在對(duì)象中,以便可以將其存儲(chǔ),傳遞到方法中,并像任何其他對(duì)象一樣返回。

肥朝小聲逼逼:命令模式使用頻率較高,和策略模式比較像,具體區(qū)別可以搜索一下。如果用過 Activiti 工作流引擎的朋友可以看一下里面的源碼,很多地方都用到了命令模式。

解釋器模式

此模式通常描述為該語言定義語法并使用該語法來解釋該格式的語句。(This pattern generally describes defining a grammar for that language and using that grammar to interpret statements in that format.)

肥朝小聲逼逼:這個(gè)比較冷門,肥朝沒怎么用過,你用過的話可以留言告訴肥朝。

迭代器模式

提供一個(gè)統(tǒng)一的方式來訪問集合中的對(duì)象。

肥朝小聲逼逼:這個(gè)中間件和基礎(chǔ)框架組的同學(xué)可能用得比較多,業(yè)務(wù)代碼的話用得不多,不過JDK中的這種使用很經(jīng)典,可以看看。

中介者模式

通過使用一個(gè)中間對(duì)象來進(jìn)行消息分發(fā)以及減少類之間的直接依賴。

肥朝小聲逼逼:看到這個(gè)描述不用我多說什么,業(yè)務(wù)代碼使用的場(chǎng)景太多了。比如你們用MQ,其實(shí)就是在用中介者模式。所以肥朝一再?gòu)?qiáng)調(diào),即使是每天CRUD,關(guān)注肥朝一起學(xué)習(xí),也能給你的CRUD項(xiàng)目,加上美顏+濾鏡(設(shè)計(jì)模式)的加強(qiáng)效果。

備忘錄模式

生成對(duì)象狀態(tài)的一個(gè)快照,以便對(duì)象可以恢復(fù)原始狀態(tài)而不用暴露自身的內(nèi)容。比如Date對(duì)象通過自身內(nèi)部的一個(gè)long值來實(shí)現(xiàn)備忘錄模式。

肥朝小聲逼逼:這個(gè)在業(yè)務(wù)中使用得不多,據(jù)肥朝了解其中一種場(chǎng)景是,你要把數(shù)據(jù)丟到MQ,但是MQ暫時(shí)不可用,那么你把數(shù)據(jù)暫存到DB,后面再輪詢丟到MQ。如果你有更好的場(chǎng)景,留言告訴肥朝。

空對(duì)象模式

它允許您抽象空對(duì)象的處理。

肥朝小聲逼逼:這個(gè)業(yè)務(wù)代碼用得不多,但是JDK中的這幾個(gè)方法我們倒是挺常用的。

觀察者模式

用于為組件提供一種靈活地向感興趣的接收者廣播消息的方式。

肥朝小聲逼逼:我們業(yè)務(wù)代碼一般是基于Zookeeper來做觀察者的。基本上用到ZK的地方,都是在用觀察者模式,比如分布式鎖,比如服務(wù)發(fā)現(xiàn)等。

狀態(tài)模式

允許您在運(yùn)行時(shí)根據(jù)內(nèi)部狀態(tài)輕松更改對(duì)象的行為。

肥朝小聲逼逼:這個(gè)在業(yè)務(wù)代碼用得就太廣泛了,我就不信你們系統(tǒng)還沒有“狀態(tài)”了。比如我們常見的訂單狀態(tài)或者各種XX狀態(tài),都可以用得上。

策略模式

使用這個(gè)模式來將一組算法封裝成一系列對(duì)象。通過調(diào)用這些對(duì)象可以靈活的改變程序的功能。

肥朝小聲逼逼:這個(gè)太高頻了,常用于優(yōu)化大量的 if-else ,如果這個(gè)設(shè)計(jì)模式都不會(huì),出去不要說關(guān)注過肥朝的公眾號(hào)!

模板方法模式

讓子類可以重寫方法的一部分,而不是整個(gè)重寫,你可以控制子類需要重寫那些操作。

肥朝小聲逼逼:這個(gè)模式也是非常高頻的模式。業(yè)務(wù)代碼中經(jīng)常遇到有很多相同的部分,我們可以做一個(gè)抽象類,子類來實(shí)現(xiàn)差異化,如果還不知道的,趕緊搜索一下,再次強(qiáng)調(diào),非常高頻。

訪問者模式

提供一個(gè)方便的可維護(hù)的方式來操作一組對(duì)象。它使得你在不改變操作的對(duì)象前提下,可以修改或者擴(kuò)展對(duì)象的行為。

參考外國(guó)文獻(xiàn): http://h5ip.cn/lPtD

[[263376]]

責(zé)任編輯:張燕妮 來源: 肥朝
相關(guān)推薦

2015-10-29 13:31:54

Ube臉書模式

2015-11-18 09:15:17

2022-09-13 08:05:47

AlloyDb架構(gòu)數(shù)據(jù)庫(kù)

2024-08-16 13:59:00

2009-07-07 16:39:40

JDK Observe

2024-12-03 08:57:30

2022-03-21 10:21:50

jQuery代碼模式

2011-10-18 11:43:25

UNIXC語言丹尼斯·里奇

2024-12-04 07:59:48

2020-01-08 14:32:06

物聯(lián)網(wǎng)黑客網(wǎng)絡(luò)安全

2011-10-17 10:24:33

C語言

2015-10-09 17:54:35

德國(guó)電信/運(yùn)營(yíng)商

2021-04-19 21:25:48

設(shè)計(jì)模式到元

2017-12-22 08:40:47

2024-09-30 08:01:12

Oracle數(shù)據(jù)庫(kù)服務(wù)生態(tài)

2011-12-28 15:24:10

設(shè)計(jì)模式

2021-03-10 08:20:54

設(shè)計(jì)模式OkHttp

2011-12-27 10:17:56

JDKJava

2010-11-26 16:17:48

設(shè)計(jì)模式JDK

2022-03-27 09:06:04

React類型定義前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 青草青草久热精品视频在线观看 | 999久久久| 国产一区二区三区四区三区四 | 国产精品综合网 | 国产欧美一区二区三区久久 | 国产高清在线精品 | 国产一级片免费在线观看 | 国产成人福利在线观看 | 日韩免费视频 | 一级欧美| 国产精品成人国产乱一区 | 午夜影院 | 欧美精品一区二区免费 | 黄色一级视频 | 精品欧美乱码久久久久久 | 一级a性色生活片久久毛片 一级特黄a大片 | 日韩在线观看 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 成人激情免费视频 | 少妇特黄a一区二区三区88av | 亚洲精品免费观看 | 欧美日韩亚洲系列 | 精品国产一区二区三区av片 | 欧美日韩亚洲二区 | 日朝毛片| 精品不卡 | 国产成人免费视频网站视频社区 | 久久亚洲一区二区 | 亚洲精品电影在线观看 | 密室大逃脱第六季大神版在线观看 | 日本黄色免费片 | 狠狠夜夜 | 日日夜夜天天干 | 成人国产在线观看 | 久久一日本道色综合久久 | 中文字幕在线欧美 | 亚洲国产成人精品久久久国产成人一区 | 天堂资源| 久久亚| 日本黄色的视频 | 一区二区三区四区视频 |