日韩在线首页I俄罗斯pornI男女猛烈激情XX00高潮动态I超碰免费97I乱人伦99久久I欧美日韩成人一区I最新日韩视频在线观看I粉嫩AV四季AV绯色AVI五月导航

×

Java描述設計模式(18):享元模式

分類:互聯網熱點 編輯:it知事 瀏覽量:2
2020-07-10 11:21:32

本文源碼:[GitHub·點這里] || [GitEE·點這里] 

 一、使用場景 **應用代碼** ```java public class C01_InScene { public static void main(String[] args) { String c0 = "cicada" ; String c1 = "cicada" ; System.out.println(c0 == c1); // true } } ``` > String類型就是使用享元模式。String對象是final類型,對象一旦創建就不可改變。在JAVA中字符串常量都是存在常量池中的,JAVA會確保一個字符串常量在常量池中只有一個拷貝,其中c0和c1就是一個字符串常量。結果為:true,說明c0和c1兩個引用都指向了常量池中的同一個字符串常量"cicada"。

這樣的設計避免了在創建N多相同對象時所產生的不必要的大量的資源消耗。 

二、享元模式 

 1、基礎簡介 > 享元模式是對象的結構模式。享元模式以共享的方式高效地支持大量的細粒度對象。常用于系統底層開發,解決系統的性能問題。像數據庫連接池,里面都是創建好的連接對象,在這些連接對象中有需要的則直接拿來用,避免重新創建。 

 2、模式圖解 

 3、核心角色 - 抽象享元角色 > 給出一個抽象接口,以規定具體享元角色要實現的方法。 - 具體享元角色 > 實現抽象享元角色所規定出的接口。如果有內部狀態的話,必須為內部狀態提供存儲能力。 - 享元工廠角色 > 負責創建和管理享元角色。必須保證享元對象可以被系統選擇性共享。當一個客戶端對象調用一個享元對象的時候,享元工廠角色會檢查系統中是否已經有一個符合要求的享元對象。如果已經存在,直接返回該對象;如果系統中沒有該享元對象,享元工廠角色就應當創建該享元對象。 

4、內部外部狀態 - 內部狀態指對象共享出來的信息,存儲在享元對象內部且不會隨環境的改變而改變。 - 外部狀態指對象得以依賴的一個標記,可以隨環境改變而改變的、不可共享的狀態。 

5、源碼實現 ```java public class C02_FlyWeight { public static void main(String[] args) { FlyweightFactory factory = new FlyweightFactory(); Flyweight fly = factory.factoryMethod('c'); fly.printState("One"); fly = factory.factoryMethod('d'); fly.printState("Two"); fly = factory.factoryMethod('c'); fly.printState("San"); // 調用了三次工廠方法,只創建了兩個對象 factory.poolInfo(); } } /** * 抽象享元角色類 */ interface Flyweight { void printState (String state); } /** * 具體享元角色類 */ class ConcreteFlyweight implements Flyweight { private Character innerState = null; public ConcreteFlyweight (Character state){ this.innerState = state; } @Override public void printState(String state) { System.out.println("內部狀態:" + this.innerState); System.out.println("外部狀態:" + state); } } /** * 享元工廠角色類 */ class FlyweightFactory { // 模擬數據池 private Map pool = new HashMap<>(); public Flyweight factoryMethod (Character state){ //先從緩存中查找對象 Flyweight fly = pool.get(state); if(fly == null){ fly = new ConcreteFlyweight(state); pool.put(state, fly); } return fly; } public void poolInfo (){ System.out.println("數據池:"+pool); } } ``` 

 三、JDK應用場景 - 測試代碼塊 ```java public class C03_Integer { public static void main(String[] args) { Integer c1 = Integer.valueOf(127),c2 = Integer.valueOf(127) ; Integer c3 = new Integer(127),c4 = new Integer(127) ; boolean flag1 = c1==c2 ,flag2 = c2==c3,flag3 = c3==c4 ; // true;false;false System.out.println(flag1+";"+flag2+";"+flag3); Integer c5 = Integer.valueOf(222),c6=Integer.valueOf(222) ; // false System.out.println(c5==c6); } } ``` - 源碼分析 ```java public static Integer valueOf(int i) { if (i >= IntegerCache.low && i 享元模式能夠解決重復對象的內存浪費的問題,當系統中有大量相似對象,需要緩沖池時。不需一直創建新對象,可以從緩沖池里拿。這樣可以降低系統內存,同時提高效率。經典的應用場景就是池技術,String常量池、數據庫連接池、緩沖池等等都是享元模式的應用,享元模式是池技術的重要實現方式。享元模式使得系統更加復雜。為了使對象可以共享,需要時刻管理對象的狀態變化,這使得程序的邏輯變得復雜。 

五、源代碼地址 ``` GitHub·地址 https://github.com/cicadasmile/model-arithmetic-parent GitEE·地址 https://gitee.com/cicadasmile/model-arithmetic-parent ```


聲明:免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發

送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。本站原創內容未經允許不得轉載,或轉載時

需注明出處:新網idc知識百科

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 狠狠色噜噜狠狠狠狠97 | 中文字幕超清在线免费观看 | 亚洲欧洲日产国码韩国 | av国内精品久久久久影院 | 久久99精品国产99久久6不卡 | 欧美激情另类 | 亚洲精品网址 | 日韩久久无码精品不卡一区二区电影 | 爱情岛亚洲论坛av入 | 免费无码一区无码东京热 | 人人爽人人射 | 少妇高潮淫片免费观看 | 国产交换配偶在线视频 | 亚洲婷婷综合久久一本伊一区 | 色妞综合 | 少妇苏晴的性荡生活 | 色爱av | 九色网址| 美女扒开屁股让男人桶 | 国产高清成人免费视频在线观看 | 精品国产网 | 对白脏话肉麻粗话av | 久久综合给合久久狠狠狠97色 | 国产成人无码a区在线观看视频免费 | 国产又粗又猛又爽又黄 | 辟里啪啦国语版免费观看 | 舒淇三级露全乳视频在 | 欧美成人高清在线播放 | 国产欧美日 | 少妇又紧又色又硬又爽 | 午夜亚洲一区 | 艹逼久久| 欧美韩国一区二区 | 亚洲综合图色40p | 女人被躁到高潮免费视频 | 黄色毛片基地 | 午夜肉体高潮免费毛片 | 91精品日产一二三区乱码 | 国产福利精品在线 | 午夜影院在线看 | 精品深夜av无码一区二区 | 亚洲欧洲日本在线 | 粗大的内捧猛烈进出在线视频 | 亚洲国产日韩欧美综合a | 国产午夜精品一区二区 | 国产免费又爽又刺激在线观看 | 日韩少妇乱码一区二区三区免费 | 国产热a欧美热a在线视频 | 国产精品第| 秋霞鲁丝片av无码少妇 | 日产精品一区二区三区在线观看 | 成人性生交天码免费看 | 婷婷导航 | 久久久久99精品成人片三人毛片 | 丰满少妇做爰视频爽爽和 | 欧美91精品久久久久国产性生爱 | 亚洲精品国产av天美传媒 | jizz4国产| 国产激情视频在线观看的 | 中文有码在线观看 | 亚洲一区二区三区在线观看视频 | 亚洲精品图片区小说区 | 人成免费在线视频 | 欧美video性欧美熟妇 | 欧美亚色 | 亚洲va一区二区 | 六姐妹在线观看免费 | 国产v片在线播放免费无码 免费看a毛片 | 国产99久久久欧美黑人刘玥 | 国产aaaaa免费大片 | 中文字幕免费无码专区 | gav久久 | jjzz日本视频 | 日本黄色大片免费 | 久久和欧洲码一码二码三码 | 亚洲国产精品入口 | 日本骚少妇 | 亚洲精品无码av人在线播放 | 人妻有码中文字幕在线 | 欧美精品久久久久久久 | 国产伦理一区 | 美女在线不卡 | 午夜成人1000部免费视频 | 操操操网站 | 夜夜嗨av久久av | 福利色播 | 亚洲精品乱码日本按摩久久久久 | 古装三级做爰在线观看 | 少妇高潮zzzzzzzyⅹ一 | 色婷婷视频在线 | 中文字幕人乱码中文字幕 | 成人免费的视频 | 极品毛片 | 国产av亚洲精品久久久久久 | 欧美xxxx8888| 青青草久久爱 | 欧美激情久久久久 | 少妇无码吹潮 | 国产情侣真实54分钟在线 |