日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

设计模式-享元模式

發(fā)布時(shí)間:2024/4/13 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式-享元模式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

栗子

使用工廠方法,表現(xiàn)層通過(guò)工廠方法創(chuàng)建對(duì)象,再傳遞給業(yè)務(wù)層,持久層,最后保存到數(shù)據(jù)庫(kù)中。
報(bào)考信息

public class Signinfo{// 報(bào)名IDprivate String id;// 考試地點(diǎn)private String location;// 科目private String subject;// 郵寄地址private String postAddress;public String getId(){return id;}public void setId(String id){this.id = id;}public String getLocation(){return location;}public String getSubject(){return subject;}public void setSubject(String subject){this.subject = subject;}public String getPostAddress(){return this.postAddress;}public void setPostAddress(String postAddress){this.postAddress = postAddress;} }

報(bào)考信息工廠,批量生產(chǎn)報(bào)考信息對(duì)象

public class SiginfoFactory{// 報(bào)名信息的對(duì)象工廠public static Signinfo getSigninfo(){return new Signinfo();} }

最后書(shū)寫(xiě)場(chǎng)景

public class Client{public static void main(String[] args){// 從工廠中獲得對(duì)象Signinfo signinfo = SigninfoFactory.getSigninfo();// 進(jìn)行其他業(yè)務(wù)處理} }

垃圾回收機(jī)制

jvm有垃圾回收機(jī)制,即自動(dòng)內(nèi)存管理。其中堆是所有線程都共享的,而棧是每個(gè)線程都各自擁有的。
程序有程序計(jì)數(shù)器,當(dāng)線程超過(guò)cpu數(shù)量,或者cpu內(nèi)核數(shù)量的時(shí)候,線程根據(jù)時(shí)間片輪詢搶奪cpu時(shí)間資源,即每個(gè)線程都需要一個(gè)獨(dú)立的程序計(jì)數(shù)器記錄正在執(zhí)行的字節(jié)碼的指令地址。
虛擬機(jī)棧,虛擬機(jī)棧是java方法執(zhí)行的內(nèi)存模型,為線程私有,每個(gè)方法在執(zhí)行的時(shí)候,會(huì)創(chuàng)建一個(gè)棧幀,這個(gè)棧幀保存著局部變量表,操作數(shù)棧,動(dòng)態(tài)鏈接,方法出口,每個(gè)方法的調(diào)用,都代表著一個(gè)棧幀從入棧到出棧的過(guò)程。方法調(diào)用會(huì)入棧,方法返回會(huì)出棧
關(guān)于java堆,垃圾收集器的主要管理區(qū)域,即GC堆,java垃圾回收算法有引用計(jì)數(shù)法,通過(guò)判斷對(duì)象的引用數(shù)量決定對(duì)象是否可以被回收,當(dāng)引用為0的對(duì)象,可以被當(dāng)做垃圾回收,當(dāng)對(duì)象之間相互引用的時(shí)候,由于兩者引用計(jì)數(shù)都不為0,所以不能使用gc進(jìn)行清除。
可達(dá)性分析算法,程序把引用關(guān)系看做一張圖,從節(jié)點(diǎn)往下搜索,當(dāng)對(duì)象沒(méi)有任何引用鏈的時(shí)候,會(huì)證明不可達(dá),此時(shí)進(jìn)行回收
垃圾收集算法,對(duì)象先判斷是否可以進(jìn)行回收,先標(biāo)記再清除,從跟集合掃描,對(duì)存活對(duì)象標(biāo)記,標(biāo)記完成以后,對(duì)未標(biāo)記的進(jìn)行回收。復(fù)制算法。將可用內(nèi)存分大小相等兩塊,這一塊用完,將存活的復(fù)制到另外一塊上,再把已經(jīng)使用的內(nèi)存空間一次清除掉。即,將堆空間分為兩塊,一塊為新生代,一塊為老年代,在進(jìn)行回收的時(shí)候,會(huì)把存活的對(duì)象,復(fù)制到新生代中,將老年代清空。

內(nèi)存泄露

使用HashMap,Vector等集合類的靜態(tài)使用容易出現(xiàn)內(nèi)存泄露,因?yàn)檫@些靜態(tài)變量的生命周期和應(yīng)用程序一致。
即各種資源的連接,網(wǎng)絡(luò)連接,IO連接沒(méi)有被close關(guān)閉,

更改

當(dāng)并發(fā)數(shù)增多的時(shí)候,每個(gè)線程會(huì)創(chuàng)建對(duì)象,并發(fā)數(shù)越多,線程數(shù)越多,此時(shí)會(huì)造成內(nèi)存的瘋狂占用,造成內(nèi)存泄露。
解決:對(duì)象池。使用一個(gè)共享池來(lái)解決問(wèn)題。
代碼如下

public class Signinfo4Pool extends Signinfo{// 定義一個(gè)keyprivate String key;// 構(gòu)造函數(shù)獲得標(biāo)志public Signinfo4Pool(String _key){this.key = _key;}public String getKey(){return key;}public void setkey(String key){this.key = key;} }

下面書(shū)寫(xiě)帶對(duì)象池的工廠類

public class SigninfoFactory{// 池容器private static HashMap<String, Signinfo> pool = new hashMap<String, Signinfo>();// 對(duì)象工廠@Deprecated// 對(duì)原先代碼進(jìn)行修改的時(shí)候,需要加上Deprecated,表明這個(gè)方法已經(jīng)廢棄。不在建議使用,不建議刪除,因?yàn)槿绻衅渌^續(xù)使用這個(gè)方法的時(shí)候,將會(huì)導(dǎo)致出現(xiàn)不可預(yù)知的問(wèn)題。用于向下兼容public static Signinfo(){return new Signinfo();}// 獲得對(duì)象public static Signinfo getSigninfo(String key){Signinfo result = null;// 當(dāng)key值存在的時(shí)候,從對(duì)象池中獲得該對(duì)象。當(dāng)key值不存在的時(shí)候,創(chuàng)建對(duì)象,并放入對(duì)象池中。if(!pool.containsKey(key)){result = new Signinfo4Pool(key);pool.put(key, result);}else{result = pool.get(key);}return result;}}

最后書(shū)寫(xiě)場(chǎng)景類

public class Client{public static void main(String[] args){// 初始化對(duì)象池for(int i = 0 ; i < 4; i++){String subject = "科目" + i;// 初始化地址for(int j = 0; j < 30; j++){String key = subject + "地點(diǎn)" + j;SigninfoFactory.getSigninfo(key);}}// 從池中獲取對(duì)象然后進(jìn)行處理。Signinfo singinfo = SignInfoFactory.getSignInfo("科目1地點(diǎn)1");} }

總結(jié)

即,將共性的內(nèi)容,提取出來(lái),然后在新建一個(gè)子類,然后在子類中預(yù)留出外部訪問(wèn)的。上方的栗子為key。然后在工廠模式中,String為key,value的值為key對(duì)應(yīng)的對(duì)象池中創(chuàng)建的對(duì)象。

ps 在上方的栗子中id作為附屬的,即,對(duì)象的動(dòng)態(tài)信息。
池 + 工廠
通過(guò)新建一個(gè)對(duì)象池,該池內(nèi)的對(duì)象有HashMap來(lái)進(jìn)行保存,然后通過(guò)工廠,輸入key值,獲取到對(duì)象。
核心在于創(chuàng)建出業(yè)務(wù)需要的對(duì)象,然后在運(yùn)行的時(shí)候,直接使用該對(duì)象。因?yàn)槎咽撬芯€程所共享的。

線程安全

由于java中堆是所有線程所共享的,所以當(dāng)共享池中的對(duì)象數(shù)不夠的時(shí)候,會(huì)出現(xiàn)線程安全的問(wèn)題,即,多個(gè)線程,共同訪問(wèn)一個(gè)對(duì)象,同時(shí)修改造成數(shù)據(jù)的錯(cuò)誤。
即,在使用享元模式的時(shí)候,對(duì)象要盡可能的多,直到業(yè)務(wù)需求全部滿足。還要注意線程安全的問(wèn)題,當(dāng)一個(gè)線程

外部狀態(tài)/內(nèi)部狀態(tài)

關(guān)于外部狀態(tài)和內(nèi)部狀態(tài),其中內(nèi)部狀態(tài)不可更改,外部狀態(tài)可更改,但是多線程的時(shí)候會(huì)出現(xiàn)很?chē)?yán)重的問(wèn)題,即線程不安全,當(dāng)多個(gè)線程共同訪問(wèn),操作外部狀態(tài)的時(shí)候,會(huì)出現(xiàn)線程不安全。至今不知道怎么解決。

繼續(xù)擴(kuò)展

此時(shí),新建一個(gè)類,用于保存key值,替代原先的String方式。
再寫(xiě)static類型的里面保存的HashMap,用于保存當(dāng)前池中的對(duì)象。
需要使用的時(shí)候,直接新將外部類,將內(nèi)容set進(jìn)入。
工廠內(nèi)需要調(diào)用狀態(tài)類的方法,生成String和HashMap中的key進(jìn)行對(duì)比。若已經(jīng)生成,直接返回該對(duì)象,否則不返回該對(duì)象

總結(jié)

享元模式 = 工廠模式 + 池

總結(jié)

以上是生活随笔為你收集整理的设计模式-享元模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩中出 | 午夜理伦三级理论 | 男人天堂网在线 | 搞黄视频在线观看 | 成人午夜影院在线观看 | 国产第一页视频 | 国产经典一区二区三区 | 蜜臀av性久久久久蜜臀aⅴ | 可以直接看av的网址 | 女女同性被吸乳羞羞 | 亚洲激情中文字幕 | 国产精品毛片久久 | 五月天综合视频 | 久草播放 | 丁香婷婷社区 | 亚洲视频导航 | 欧美aaaa视频| 国产精品第一页在线观看 | 少妇h视频| 日韩成人在线视频观看 | 国产欧美一区二区三区在线老狼 | 91精东传媒理伦片在线观看 | 嫩草亚洲 | 精品人妻在线播放 | 免费看黄色片网站 | 超碰日韩在线 | 97干视频 | 葵司有码中文字幕二三区 | 亚洲精品一区三区三区在线观看 | 国产色片 | 国产学生美女无遮拦高潮视频 | 免费在线观看小视频 | 亚洲视频在线观看免费视频 | 蜜桃精品成人影片 | 欧美精品videosex极品 | 久久久综合色 | 国产精品va无码一区二区三区 | 91av免费 | 国产午夜无码视频在线观看 | 亚洲一区日韩 | 国产精品第一国产精品 | 日韩丰满少妇 | 欧美一线高本道 | 狠狠av | 美日韩一级 | 三点尽露的大尺度国产 | 天天天天操| 精品网站999 | 91网站大全 | 欧美69影院 | 日韩一级片在线播放 | 少妇做爰免费视看片 | 国产v亚洲v天堂无码久久久 | 男人天堂1024 | 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 狂野少女电影在线观看国语版免费 | 精品一区二区三区视频 | 日韩第六页 | 九热视频在线观看 | 又黄又爽又刺激的视频 | 精品久久久久久无码中文野结衣 | 国产天堂在线观看 | 国产日韩欧美一二三区 | 成年人小视频在线观看 | 中文日韩在线 | 综合网av| 欧美性xxxxx 亚洲特黄一级片 | 三年中文免费观看大全动漫 | 91高清在线| jk美女又爽又黄视频 | 国产精品久久久久毛片大屁完整版 | 午夜av免费在线观看 | 波多野结衣视频一区二区 | 99精品在线视频观看 | 特级av | 95视频在线观看 | 欧美理伦| 天堂av一区二区 | 久热免费在线 | 天堂在线播放 | 99久久久久无码国产精品 | av在线色 | 日韩大片免费在线观看 | 精品一区二区三区在线免费观看 | 91高跟黑色丝袜呻吟动态图 | xxxwww黄色| 校园激情亚洲 | 四虎影裤 | 激情视频在线免费观看 | 国产视频一区二区三区在线 | 九九热这里有精品 | 欧美激情片一区二区 | 黄色小毛片| 97人妻精品一区二区三区免 | 一级国产精品 | 日韩a级大片 | h片在线看 | 碧蓝之海动漫在线观看免费高清 | 尤物毛片 |