欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java描述設(shè)計(jì)模式(18):享元模式

本文源碼:[GitHub·點(diǎn)這里] || [GitEE·點(diǎn)這里]

陽(yáng)泉ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!

一、使用場(chǎng)景 **應(yīng)用代碼** ```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對(duì)象是final類型,對(duì)象一旦創(chuàng)建就不可改變。在JAVA中字符串常量都是存在常量池中的,JAVA會(huì)確保一個(gè)字符串常量在常量池中只有一個(gè)拷貝,其中c0和c1就是一個(gè)字符串常量。結(jié)果為:true,說(shuō)明c0和c1兩個(gè)引用都指向了常量池中的同一個(gè)字符串常量"cicada"。

這樣的設(shè)計(jì)避免了在創(chuàng)建N多相同對(duì)象時(shí)所產(chǎn)生的不必要的大量的資源消耗。

二、享元模式

1、基礎(chǔ)簡(jiǎn)介 > 享元模式是對(duì)象的結(jié)構(gòu)模式。享元模式以共享的方式高效地支持大量的細(xì)粒度對(duì)象。常用于系統(tǒng)底層開(kāi)發(fā),解決系統(tǒng)的性能問(wèn)題。像數(shù)據(jù)庫(kù)連接池,里面都是創(chuàng)建好的連接對(duì)象,在這些連接對(duì)象中有需要的則直接拿來(lái)用,避免重新創(chuàng)建。

2、模式圖解

3、核心角色 - 抽象享元角色 > 給出一個(gè)抽象接口,以規(guī)定具體享元角色要實(shí)現(xiàn)的方法。 - 具體享元角色 > 實(shí)現(xiàn)抽象享元角色所規(guī)定出的接口。如果有內(nèi)部狀態(tài)的話,必須為內(nèi)部狀態(tài)提供存儲(chǔ)能力。 - 享元工廠角色 > 負(fù)責(zé)創(chuàng)建和管理享元角色。必須保證享元對(duì)象可以被系統(tǒng)選擇性共享。當(dāng)一個(gè)客戶端對(duì)象調(diào)用一個(gè)享元對(duì)象的時(shí)候,享元工廠角色會(huì)檢查系統(tǒng)中是否已經(jīng)有一個(gè)符合要求的享元對(duì)象。如果已經(jīng)存在,直接返回該對(duì)象;如果系統(tǒng)中沒(méi)有該享元對(duì)象,享元工廠角色就應(yīng)當(dāng)創(chuàng)建該享元對(duì)象。

4、內(nèi)部外部狀態(tài) - 內(nèi)部狀態(tài)指對(duì)象共享出來(lái)的信息,存儲(chǔ)在享元對(duì)象內(nèi)部且不會(huì)隨環(huán)境的改變而改變。 - 外部狀態(tài)指對(duì)象得以依賴的一個(gè)標(biāo)記,可以隨環(huán)境改變而改變的、不可共享的狀態(tài)。

5、源碼實(shí)現(xiàn) ```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"); // 調(diào)用了三次工廠方法,只創(chuàng)建了兩個(gè)對(duì)象 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("內(nèi)部狀態(tài):" + this.innerState); System.out.println("外部狀態(tài):" + state); } } /** * 享元工廠角色類 */ class FlyweightFactory { // 模擬數(shù)據(jù)池 private Map pool = new HashMap<>(); public Flyweight factoryMethod (Character state){ //先從緩存中查找對(duì)象 Flyweight fly = pool.get(state); if(fly == null){ fly = new ConcreteFlyweight(state); pool.put(state, fly); } return fly; } public void poolInfo (){ System.out.println("數(shù)據(jù)池:"+pool); } } ```

三、JDK應(yīng)用場(chǎng)景 - 測(cè)試代碼塊 ```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 享元模式能夠解決重復(fù)對(duì)象的內(nèi)存浪費(fèi)的問(wèn)題,當(dāng)系統(tǒng)中有大量相似對(duì)象,需要緩沖池時(shí)。不需一直創(chuàng)建新對(duì)象,可以從緩沖池里拿。這樣可以降低系統(tǒng)內(nèi)存,同時(shí)提高效率。經(jīng)典的應(yīng)用場(chǎng)景就是池技術(shù),String常量池、數(shù)據(jù)庫(kù)連接池、緩沖池等等都是享元模式的應(yīng)用,享元模式是池技術(shù)的重要實(shí)現(xiàn)方式。綿陽(yáng)服務(wù)器托管享元模式使得系統(tǒng)更加復(fù)雜。為了使對(duì)象可以共享,需要時(shí)刻管理對(duì)象的狀態(tài)變化,這使得程序的邏輯變得復(fù)雜。

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

本文題目:Java描述設(shè)計(jì)模式(18):享元模式
標(biāo)題鏈接:http://aaarwkj.com/article10/sdpego.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站改版、品牌網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、App設(shè)計(jì)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
国产成人一区二区三区影| 中文字幕一区二区av| 可以看的黄色亚洲网站| 在线观看男人的天堂av| 日本韩国欧美在线一区| 国产一区二区高清在线| 女人被爽到高潮呻吟免费看| 亚洲中文字幕女同系列av专区 | 日韩亚洲精品99综合观看| 丝袜美腿亚洲欧美日韩| 国产三级久久精品三级91| av免费在线观看麻豆| 国产亚洲精品久久久闺蜜| 91大神黑丝美女洗澡| 中文色婷婷国产精品视频| 久久最新视频中文字幕| 久草午夜福利视频免费观看| 亚洲激情欧美日韩精品| 欧美三级精品三级在线| 精品亚洲国产成人av| 一区二区三区福利视频在线观看 | 日韩视频专区一区二区| 亚洲欧美日韩另类自拍| 国产夫妻一区二区三区| 国产精品成人亚洲一区二区| 精品久久一区麻豆香蕉| 亚洲欧洲中文字幕一区二区| 成熟女人毛茸茸的视频| 男人喜欢看的免费视频| 成人av免费高清在线播放| 国产女片xb内射在线| 视频播放一区二区三区毛片| 韩国日本午夜福利在线| 欧美成人精品欧美一级黄片| 亚洲人成网站在线免费看| 日本一区二区在线高清| 不卡的视频在线观看| 中文字幕国产精品欧美| 亚洲综合中文字幕精品| 国产精品女人毛片在线看| 久久久久久这里都是精品|