摘要:享元模式一享元模式定義運(yùn)用共享技術(shù)有效的支持大量細(xì)粒度的對(duì)象二具體實(shí)現(xiàn)創(chuàng)建對(duì)象接口創(chuàng)建具體對(duì)象創(chuàng)建工廠調(diào)用輸出三優(yōu)缺點(diǎn)優(yōu)點(diǎn)減少對(duì)象的創(chuàng)建,節(jié)省內(nèi)存缺點(diǎn)提升了系統(tǒng)的復(fù)雜性四源碼
享元模式
一. 享元模式 1.1 定義運(yùn)用共享技術(shù)有效的支持大量細(xì)粒度的對(duì)象.
二. 具體實(shí)現(xiàn) 2.1 創(chuàng)建對(duì)象接口public interface IFlyweight { void print(); }2.2 創(chuàng)建具體對(duì)象
public class Flyweight implements IFlyweight { private String id; public Flyweight(String id){ this.id = id; } @Override public void print() { System.out.println("Flyweight.id = " + getId() + " ..."); } public String getId() { return id; } }2.3 創(chuàng)建工廠
public class FlyweightFactory { private Map2.4 調(diào)用flyweightMap = new HashMap(); public IFlyweight getFlyweight(String str){ IFlyweight flyweight = flyweightMap.get(str); if(flyweight == null){ flyweight = new Flyweight(str); flyweightMap.put(str, flyweight); } return flyweight; } public int getFlyweightMapSize(){ return flyweightMap.size(); } }
public static void main(String[] args) { FlyweightFactory flyweightFactory = new FlyweightFactory(); IFlyweight flyweight1 = flyweightFactory.getFlyweight("A"); IFlyweight flyweight2 = flyweightFactory.getFlyweight("B"); IFlyweight flyweight3 = flyweightFactory.getFlyweight("A"); flyweight1.print(); flyweight2.print(); flyweight3.print(); System.out.println(flyweightFactory.getFlyweightMapSize()); }2.5 輸出
Flyweight.id = A ... Flyweight.id = B ... Flyweight.id = A ... 2三. 優(yōu)缺點(diǎn) 3.1 優(yōu)點(diǎn)
減少對(duì)象的創(chuàng)建,節(jié)省內(nèi)存.
3.2 缺點(diǎn)提升了系統(tǒng)的復(fù)雜性.
四. 源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/69534.html
摘要:享元模式屬于結(jié)構(gòu)型模式的一種,又稱輕量級(jí)模式,通過(guò)共享技術(shù)有效地實(shí)現(xiàn)了大量細(xì)粒度對(duì)象的復(fù)用概述兩種結(jié)構(gòu)狀態(tài)內(nèi)部狀態(tài)享元對(duì)象內(nèi)部不隨外界環(huán)境改變而改變的共享部分。 享元模式(Flyweight Pattern)屬于結(jié)構(gòu)型模式的一種,又稱輕量級(jí)模式,通過(guò)共享技術(shù)有效地實(shí)現(xiàn)了大量細(xì)粒度對(duì)象的復(fù)用... 概述 兩種結(jié)構(gòu)狀態(tài) 內(nèi)部狀態(tài):享元對(duì)象內(nèi)部不隨外界環(huán)境改變而改變的共享部分。 外部狀態(tài)...
摘要:類圖相關(guān)的設(shè)計(jì)模式享元模式和代理模式當(dāng)代理模式消耗性能比較大的時(shí)候,就可以用享元模式享元模式和單例模式容器單例,享元模式就是復(fù)用對(duì)象的思想。源碼中的享元模式源碼地址享元模式參考慕課網(wǎng)設(shè)計(jì)模式精講設(shè)計(jì)模式讀書(shū)筆記享元模式 0x01.定義與類型 定義:提供了減少對(duì)象數(shù)量從而改善應(yīng)用所需的對(duì)象結(jié)構(gòu)的方法,系統(tǒng)使用少量對(duì)象,而且這些都比較相似,狀態(tài)變化小,可以實(shí)現(xiàn)對(duì)象的多次復(fù)用。 運(yùn)用共享技...
摘要:享元模式運(yùn)用共享技術(shù)來(lái)有效地支持大量細(xì)粒度對(duì)象的復(fù)用,以減少創(chuàng)建的對(duì)象的數(shù)量。意為蒼蠅,指輕蠅量級(jí),指代對(duì)象粒度很小。如果考生人數(shù)少,就分別少準(zhǔn)備幾個(gè)自動(dòng)檔和手動(dòng)檔的駕考車,考生多的話就多準(zhǔn)備幾輛。我們?nèi)タ妓牧?jí)的時(shí)候?yàn)槭裁催@么多考試 showImg(https://segmentfault.com/img/remote/1460000020135777); 享元模式 (Flyweig...
摘要:類的適配器結(jié)構(gòu)目標(biāo)角色這就是所期待得到的接口,由于是類適配器模式,因此目標(biāo)不可以是類。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝。和適配器模式的關(guān)系適配器模式的用意是改變所考慮對(duì)象的接口,而代理模式不能改變。 點(diǎn)擊進(jìn)入我的博客 3.1 適配器模式 適配器模式把一個(gè)類的接口變換成客戶端所期待的另一種接口,使得原本因接口不匹配而無(wú)法在一起工作的兩個(gè)類能夠在一起工作。 3...
摘要:享元模式會(huì)復(fù)用那些內(nèi)存中已經(jīng)存在且與請(qǐng)求對(duì)象相似的對(duì)象,而不是去創(chuàng)建新的對(duì)象,那些已經(jīng)存在的對(duì)象會(huì)以某種方式存儲(chǔ),如果沒(méi)有發(fā)現(xiàn)與請(qǐng)求匹配的對(duì)象時(shí)將會(huì)創(chuàng)建新的對(duì)象。 原文鏈接譯者:smallclover希望對(duì)你有所幫助,謝謝! 設(shè)計(jì)模式-享元模式 享元模式主要用來(lái)減少對(duì)象的數(shù)量(復(fù)用我們內(nèi)存中已存在的對(duì)象,減少在系統(tǒng)創(chuàng)建對(duì)象實(shí)例),以此來(lái)減少對(duì)內(nèi)存資源的占用,從而提高系統(tǒng)的性能。這種類型...
閱讀 2228·2021-11-22 15:29
閱讀 4109·2021-11-04 16:13
閱讀 997·2019-08-29 16:58
閱讀 345·2019-08-29 16:08
閱讀 1464·2019-08-23 17:56
閱讀 2391·2019-08-23 17:06
閱讀 3170·2019-08-23 16:55
閱讀 2064·2019-08-23 16:22