1. 程式人生 > >大戰設計模式(第二季)【6】———— 從源碼看享元模式

大戰設計模式(第二季)【6】———— 從源碼看享元模式

不同的 來看 全部 技術分享 inf 範圍 eof 模式 www.

前言

享元模式聽名字其實很少見,但是其實這個模式非常簡單,所以用到的地方都不知道自己用到了。
這個模式用一句話描述就是,將已經創建過的對象保存起來,方便下次使用,減少重復對象的創建。(你可以簡單的理解為緩存,嘻嘻)
由於享元模式很簡單,這裏就舉一個實際的例子來說明。

享元模式基礎:https://www.cnblogs.com/linkstar/p/7803898.html

從Integer來看享元模式

沒想到吧,其實Integer偷偷用了。
技術分享圖片?
看看這個我們常用的valueOf方法,裏面有個神奇的IntegerCache
技術分享圖片?
簡單的來說,當你的輸在在-128到127(有些情況可能更大)之間的時候,他都會直接從cache中拿,這些都早就創建好了,不用你操心,沒想到這裏java也做了優化。

所以,有個小常識,使用Integer的時候,如果再之前那個範圍內,那麽創建出來的是同一個對象,而超過這個範圍,那麽兩個對象就是不同的了。

Integer a1 = new Integer.valueOf(100);
Integer a2 = 100;
a1 == a2

Integer b1 = new Integer.valueOf(1000);
Integer b2 = 1000;
b1 != b2

總結

享元模式總結來說就是共享對象,減少對象的生成,從而優化性能,我們常見的一些池也是享元模式的一種體現。

作者:LinkinStar
轉載請註明出處
全部案例請看:https://www.cnblogs.com/linkstar/category/1087887.html

大戰設計模式(第二季)【6】———— 從源碼看享元模式