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

從 JDK 中,我們能學到哪些設計模式?

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

結構性模式:

適配器模式:

常用于將一個新接口適配舊接口

肥朝小聲逼逼:在我們業務代碼中經常有新舊接口適配需求,可以采用該模式。

橋接模式:

將抽象和抽象的具體實現進行解耦,這樣可以使得抽象和抽象的具體實現可以獨立進行變化。

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

組合模式

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

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

裝飾者模式

動態的給一個對象附加額外的功能,因此它也是子類化的一種替代方法。該設計模式在JDK中廣泛運用,以下只是列舉一小部分

肥朝小聲逼逼:這個模式使用就太廣了,我們常用的AOP,既有動態代理,也有裝飾者的味道。

門面模式

為一組組件,接口,抽象或子系統提供簡化的接口。

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

享元模式

使用緩存來減少對小對象的訪問時間

肥朝小聲逼逼:只要用到了緩存,基本都是在使用享元模式。很多同學都說自己的項目太low了,都沒有用到什么設計模式,這不是開玩笑嗎,你用個map緩存幾個對象,基本上都運用了享元的思想。

代理模式

代理模式用于向較簡單的對象代替創建復雜或耗時的對象。

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

創建模式

抽象工廠模式

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

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

建造者模式

用于通過定義一個類來簡化復雜對象的創建,該類的目的是構建另一個類的實例。構建器模式還允許實現Fluent接口。

肥朝小聲逼逼:這個在我們業務代碼中使用的場景太廣泛了。比如訂單系統大部分項目都有,訂單對象就是一個復雜對象,我們就可以采用建造者模式來做。

工廠方法

只是一個返回實際類型的方法。

肥朝小聲逼逼:這個屬于大家都會的設計模式,不多過介紹。

原型模式

使得類的實例能夠生成自身的拷貝。如果創建一個對象的實例非常復雜且耗時時,就可以使用這種模式,而不重新創建一個新的實例,你可以拷貝一個對象并直接修改它。

肥朝小聲逼逼:這個你以為是冷門的設計模式,其實錯了,這個是大熱門的設計模式。比如我們業務代碼,經常要各種DTO、BO、DO、VO轉換,其實就可以參考原型設計模式的思想來做。

單例模式

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

肥朝小聲逼逼:在平時開發中,單例是我們用得最多的了,因為Spring的bean,默認就是單例級別的。單例屬于大家基本都會的設計模式。

行為模式

責任鏈

通過把請求從一個對象傳遞到鏈條中下一個對象的方式來解除對象之間的耦合,直到請求被處理完畢。鏈中的對象是同一接口或抽象類的不同實現。

肥朝小聲逼逼:凡是帶有 Filter 關鍵詞的,基本都在用這個設計模式。在業務代碼使用的場景實在是太多了,用到攔截器的地方基本都在用這個設計模式。

命令模式

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

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

解釋器模式

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

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

迭代器模式

提供一個統一的方式來訪問集合中的對象。

肥朝小聲逼逼:這個中間件和基礎框架組的同學可能用得比較多,業務代碼的話用得不多,不過JDK中的這種使用很經典,可以看看。

中介者模式

通過使用一個中間對象來進行消息分發以及減少類之間的直接依賴。

肥朝小聲逼逼:看到這個描述不用我多說什么,業務代碼使用的場景太多了。比如你們用MQ,其實就是在用中介者模式。所以肥朝一再強調,即使是每天CRUD,關注肥朝一起學習,也能給你的CRUD項目,加上美顏+濾鏡(設計模式)的加強效果。

備忘錄模式

生成對象狀態的一個快照,以便對象可以恢復原始狀態而不用暴露自身的內容。比如Date對象通過自身內部的一個long值來實現備忘錄模式。

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

空對象模式

它允許您抽象空對象的處理。

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

觀察者模式

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

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

狀態模式

允許您在運行時根據內部狀態輕松更改對象的行為。

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

策略模式

使用這個模式來將一組算法封裝成一系列對象。通過調用這些對象可以靈活的改變程序的功能。

肥朝小聲逼逼:這個太高頻了,常用于優化大量的 if-else ,如果這個設計模式都不會,出去不要說關注過肥朝的公眾號!

模板方法模式

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

肥朝小聲逼逼:這個模式也是非常高頻的模式。業務代碼中經常遇到有很多相同的部分,我們可以做一個抽象類,子類來實現差異化,如果還不知道的,趕緊搜索一下,再次強調,非常高頻。

訪問者模式

提供一個方便的可維護的方式來操作一組對象。它使得你在不改變操作的對象前提下,可以修改或者擴展對象的行為。

參考外國文獻: http://h5ip.cn/lPtD

[[263376]]

責任編輯:張燕妮 來源: 肥朝
相關推薦

2015-10-29 13:31:54

Ube臉書模式

2015-11-18 09:15:17

2022-09-13 08:05:47

AlloyDb架構數據庫

2024-08-16 13:59:00

2009-07-07 16:39:40

JDK Observe

2024-12-03 08:57:30

2011-10-18 11:43:25

UNIXC語言丹尼斯·里奇

2022-03-21 10:21:50

jQuery代碼模式

2024-12-04 07:59:48

2020-01-08 14:32:06

物聯網黑客網絡安全

2011-10-17 10:24:33

C語言

2015-10-09 17:54:35

德國電信/運營商

2021-04-19 21:25:48

設計模式到元

2017-12-22 08:40:47

2024-09-30 08:01:12

Oracle數據庫服務生態

2011-12-28 15:24:10

設計模式

2021-03-10 08:20:54

設計模式OkHttp

2011-12-27 10:17:56

JDKJava

2023-12-30 21:02:36

2022-03-27 09:06:04

React類型定義前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久久中文字幕欢迎你 | 久久久久久久一级 | 久久久久国产精品午夜一区 | 久久久蜜桃一区二区人 | 日韩av手机在线观看 | 国产三区在线观看视频 | 亚洲成人一区 | 九九视频网 | 久久国产精品一区 | 九九亚洲| 在线看av网址 | 久草免费福利 | 精品国产乱码久久久久久久久 | 婷婷综合在线 | 美女天天操 | 欧美黄色一区 | 荷兰欧美一级毛片 | 日韩av中文 | 狠狠色网 | 国产精品免费大片 | 观看av| 欧美国产日韩在线 | 99re在线视频| 香蕉视频91 | 国产精品欧美精品日韩精品 | 日韩成人av在线 | 高清视频一区二区三区 | 热久久999| 日日天天 | 免费午夜电影 | 亚洲精品乱码久久久久久9色 | 国产精品久久久久久久久 | 久久久久久国产精品免费免费狐狸 | 欧美一区二区在线 | 欧美精品成人一区二区三区四区 | 一级a爱片久久毛片 | h免费观看 | 97热在线| 欧美性受xxxx| 色综合激情 | 99热播精品 |