亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

設計模式(十二)享元模式

2019-11-09 18:31:46
字體:
來源:轉載
供稿:網友

相關文章 設計模式(一)設計六大原則 設計模式(二)單例模式的七種寫法 設計模式(三)建造者模式 設計模式(四)簡單工廠模式 設計模式(五)觀察者模式 設計模式(六)代理模式 設計模式(七)裝飾模式 設計模式(八)外觀模式 設計模式(九)模版方法模式 設計模式(十)工廠方法模式 設計模式(十一)策略模式

享元模式定義

享元模式是結構型設計模式的一種,是池技術的重要實現方式,它可以減少應用程序創建的對象,降低程序內存的占用,提高程序的性能。

定義:使用共享對象有效的支持大量細粒度的對象

要求細粒度對象,那么不可避免地使得對象數量多且性質相近,這些對象分為兩個部分:內部狀態和外部狀態。內部狀態是對象可共享出來的信息,存儲在享元對象內部并且不會隨環境的改變而改變。而外部狀態是對象依賴的一個標記是隨環境改變而改變的并且不可共享的狀態。 享元模式結構圖如下圖所示。 享元模式結構圖

在享元模式中有如下角色: - Flyweight:抽象享元角色,同時定義出對象的外部狀態和內部狀態的接口或者實現。 - ConcreteFlyweight:具體享元角色,實現抽象享元角色定義的業務。 - FlyweightFactory:享元工廠,負責管理對象池和創建享元對象。

享元模式簡單實現

某寶商城賣商品,如果每個用戶下單都生成商品對象顯然會耗費很多資源,如果趕上雙11,那恐怖的訂單量會生成很多商品對象,更何況商城賣的商品種類繁多,這樣就極易會產生OOM。因此我們采用享元模式來對商品的創建進行優化。

抽象享元角色

抽象享元角色是一個商品接口,它定義了showGoodsPRice方法用來展示商品的價格:

public interface IGoods { public void showGoodsPrice(String name);}

具體享元角色

定義類Goods,它實現IGoods 接口,并實現了showGoodsPrice方法,如下所示。

public class Goods implements IGoods{ private String name;//名稱 private String version;//版本 Goods(String name){ this.name=name; } @Override public void showGoodsPrice(String version) { if(version.equals("32G")){ System.out.println("價格為5199元"); }else if(version.equals("128G")){ System.out.println("價格為5999元"); } }}

其中name為內部狀態,version為外部狀態。showGoodsPrice方法根據version的不同會打印出不同的價格。

享元工廠

public class GoodsFactory { private static Map<String,Goods> pool=new HashMap<String, Goods>(); public static Goods getGoods(String name){ if(pool.containsKey(name)){ System.out.println("使用緩存,key為:"+name); return pool.get(name); }else{ Goods goods=new Goods(name); pool.put(name,goods); System.out.println("創建商品,key為:"+name); return goods; } }}

享元工廠GoodsFactory 用來創建Goods對象。通過Map容器來存儲Goods對象,將內部狀態name作為Map的key,以便標識Goods對象。如果Map容器中包含此key,則使用Map容器中存儲的Goods對象,否則就新創建Goods對象,并放入Map容器中。

客戶端調用

客戶端中調用GoodsFactory的getGoods方法來創建Goods對象,并調用Goods 的showGoodsPrice方法來顯示產品的價格,如下所示。

public class Client { public static void main(String[]args) { Goods goods1=GoodsFactory.getGoods("運行結果為: 創建商品,key為:iphone7 價格為5199元 使用緩存,key為:iphone7 價格為5199元 使用緩存,key為:iphone7 價格為5999元

從輸出看出,只有第一次是創建Goods對象,后面因為key值相同,所以都是使用了對象池中的Goods對象。在這個例子中,name作為內部狀態是不變的,并且作為Map的key值是可以共享的。而showGoodsPrice方法中需要傳入的version值則是外部狀態,他的值是變化的。

享元模式的使用場景

系統中存在大量的相似對象。需要緩沖池的場景。細粒度的對象都具備較接近的外部狀態,而且內部狀態與環境無關,也就是說對象沒有特定身份。

參考資料 《大話設計模式》 《設計模式之禪》 《Android源碼設計模式》


歡迎關注我的微信公眾號,第一時間獲得博客更新提醒,以及更多成體系的Android相關技術干貨。 掃一掃下方二維碼即可關注:

enter image description here


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩激情av在线播放| 午夜精品久久久久久99热软件| 久久免费高清视频| 欧美福利小视频| 热久久这里只有| 国产在线观看91精品一区| 国产91精品久久久久久| 中文字幕精品网| 91久久久在线| 成人黄色中文字幕| 国产精品劲爆视频| 欧美午夜激情视频| 欧美日韩国产限制| 亚洲午夜色婷婷在线| 亚洲第一国产精品| 欧美日韩国产综合视频在线观看中文| 亚洲免费视频在线观看| 色综合色综合久久综合频道88| 国产一区二区三区久久精品| 国产精品久久一| 成人性生交大片免费看小说| 51ⅴ精品国产91久久久久久| 久久久久国产精品免费| 欧美激情女人20p| 亚洲国产中文字幕久久网| 日本一区二区不卡| 亚洲理论在线a中文字幕| 国产一区二区三区毛片| 亚洲精品视频网上网址在线观看| 最好看的2019年中文视频| 成人欧美一区二区三区在线| 久久久精品电影| 欧美情侣性视频| 日韩在线精品一区| 日韩视频在线免费观看| 国产精品一区二区性色av| 日韩成人在线观看| 亚洲图片在线综合| 亚洲黄色免费三级| 国产欧美日韩免费看aⅴ视频| 亚洲精品美女在线观看| 精品久久久久久电影| 日韩av网址在线| 一区二区亚洲精品国产| 裸体女人亚洲精品一区| 久久久久在线观看| 8x拔播拔播x8国产精品| 伊人伊人伊人久久| 精品久久中文字幕| 久久成人精品电影| 国产精品白丝av嫩草影院| 在线播放亚洲激情| 狠狠躁夜夜躁久久躁别揉| 日韩视频―中文字幕| 美日韩丰满少妇在线观看| 日韩精品中文字幕久久臀| 不卡在线观看电视剧完整版| 日韩在线观看视频免费| 亚洲性视频网站| 亚洲区免费影片| 国产精品成人va在线观看| 国产99视频在线观看| 91人人爽人人爽人人精88v| 亚洲日本中文字幕| 久久精品免费播放| 亚洲欧美日韩天堂| 97免费中文视频在线观看| 亚洲美女av网站| 欧美成人久久久| 色婷婷av一区二区三区在线观看| 91亚洲国产精品| 欧美大人香蕉在线| 欧美国产精品va在线观看| 国产精品白丝jk喷水视频一区| 91久久国产精品91久久性色| 精品国产自在精品国产浪潮| 精品网站999www| 亚洲理论片在线观看| 日韩在线视频网站| 国产视频精品免费播放| 中文欧美日本在线资源| 精品久久久久久久久中文字幕| 国产精品成人免费电影| 亚洲成**性毛茸茸| 最近2019中文字幕第三页视频| 日韩极品精品视频免费观看| 日韩理论片久久| 欧美成人国产va精品日本一级| 精品精品国产国产自在线| 91精品综合久久久久久五月天| 国产极品jizzhd欧美| 日韩中文视频免费在线观看| 久久视频在线看| 国产精品福利片| 中文字幕九色91在线| 久久福利网址导航| 久久精品亚洲国产| 亚洲最大成人在线| 亚洲精品欧美日韩| 91精品视频在线播放| 国产69精品久久久久9| 欧美激情亚洲综合一区| 亚洲成人三级在线| 欧美日韩中文字幕| 久久久久久久国产精品视频| 日本免费一区二区三区视频观看| 久久精品视频亚洲| 一区二区欧美在线| 91精品国产91久久久久福利| 国产成人精品免高潮在线观看| 日韩在线精品视频| 亚洲欧美中文日韩在线| 92版电视剧仙鹤神针在线观看| 播播国产欧美激情| 一区三区二区视频| 97成人精品视频在线观看| 2019中文字幕在线| 欧美噜噜久久久xxx| 日本不卡高字幕在线2019| 国产91精品高潮白浆喷水| 欧美成人免费在线观看| 夜色77av精品影院| 欧美伦理91i| 日韩精品免费在线| 97视频网站入口| 国产成人精品一区| 91免费看片网站| 国产一区二区香蕉| 欧美黄色片视频| 国产成人av网址| 亚洲精品国产福利| 亚洲第一综合天堂另类专| 亚洲精品久久久久国产| 久久99国产精品自在自在app| 久久久之久亚州精品露出| 久久99精品国产99久久6尤物| 成人激情av在线| 日韩最新免费不卡| 日韩av在线一区| 久久中文字幕在线| 国产最新精品视频| 欧美日韩国产第一页| 国产精品久久久999| 最好看的2019年中文视频| 欧美一区第一页| 日韩av第一页| 97视频com| 亚洲第一综合天堂另类专| 久久精品美女视频网站| 91国在线精品国内播放| 久久精品亚洲国产| 欧美另类在线观看| 国内成人精品视频| 欧美激情欧美狂野欧美精品| 777午夜精品福利在线观看| 最新亚洲国产精品| 欧美丰满少妇xxxx| 亚洲精美色品网站| 亚洲精品国产suv| 亚洲伊人久久大香线蕉av| 国产欧美欧洲在线观看| 在线观看精品国产视频| 亚洲欧美中文日韩在线| 九九热精品视频在线播放|