大話設計模式筆記 享元模式

享元模式(Flyweigh),運用共享技術有效地支持大量細粒度的對象。

?

package flyweight;//可以接受并作用于外部狀態
public abstract class Flyweight {public abstract  void operation(int extrinsicState);}

?

package flyweight;//為內部狀態增加存儲空間
public class ConcreteFlyweight extends Flyweight{@Overridepublic void operation(int extrinsicState) {System.out.println("ConcreteFlyweight"+extrinsicState);}}

?

package flyweight;//不需要共享的子類
public class UnsharedConcreteFlyweight extends Flyweight {@Overridepublic void operation(int extrinsicState) {System.out.println("UnsharedConcreteFlyweight"+extrinsicState);}}

?

package flyweight;import java.util.HashMap;public class FlyweightFactory {private HashMap<String, Flyweight> flyweightMap=new HashMap<String, Flyweight>();public FlyweightFactory() {flyweightMap.put("X", new ConcreteFlyweight());flyweightMap.put("Y", new ConcreteFlyweight());flyweightMap.put("Z", new ConcreteFlyweight());}public Flyweight getFlyweightMap(String key) {return flyweightMap.get(key);}public static void main(String[] args) {int extrinsicState=22;FlyweightFactory flyweightFactory=new FlyweightFactory();Flyweight flyweight=flyweightFactory.getFlyweightMap("X");flyweight.operation(--extrinsicState);Flyweight flyweight2=flyweightFactory.getFlyweightMap("Y");flyweight.operation(--extrinsicState);Flyweight flyweight3=flyweightFactory.getFlyweightMap("Z");flyweight.operation(--extrinsicState);UnsharedConcreteFlyweight unsharedConcreteFlyweight=new UnsharedConcreteFlyweight();unsharedConcreteFlyweight.operation(--extrinsicState);}}

?

享元模式可以避免大量非常相似類的開銷。在程序設計中,有時需要生成大量細粒度的類實例來表示數據。如果能發現這些實例除了幾個參數外基本上都是相同的,有時就能夠大幅度地減少需要實例化的類的數量,如果能把那些參數移到類實例的外面,在方法調用時將它們傳遞進來,就可以通過共享大幅度地減少單個實例的數目。

?

轉載于:https://www.cnblogs.com/linkarl/p/4868193.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272870.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python12歲_12歲。Python操作Excel,12Python,excel

excel在Python中的應用存測試數據有的時候大批量的數據&#xff0c;存到txt文件里顯然不是最佳的方式&#xff0c;我們可以存到excel文件里面&#xff0c;第一方便我們存儲數據和做數據&#xff0c;一方面方便我們讀取數據&#xff0c;比較明朗。測試的時候就從數據庫中讀取出來…

什么叫工作到位?很深刻!

1、匯報工作說結果不要告訴老板工作過程多艱辛&#xff0c;你多么不容易&#xff01;老板不傻&#xff0c;否則做不到今天。舉重若輕的人老板最喜歡&#xff0c;一定要把結果給老板&#xff0c;結果思維是第一思維。2、請示工作說方案不要讓老板做問答題&#xff0c;而是要讓老…

react 給一個引用的組件添加新屬性_高階組件在React中的應用

高階組件的定義接受React組件作為輸入&#xff0c;輸出一個新的React組件。概念源自于高階函數&#xff0c;將函數作為參數&#xff0c;或者輸出一個函數&#xff0c;如map&#xff0c;reduce&#xff0c;sort。 用haskell的函數簽名來表示&#xff1a; hocFactory:: W: React.…

雜想 · 警醒

今天無意間看到CSDN上一位大牛師姐的博客&#xff0c;真的是好驚訝啊&#xff01;很多時候總是太過自以為是&#xff0c;以為自己做不到的事情別人也很難做到。恰恰相反&#xff0c;成功總是伴隨那些謙遜、努力、認真的人的&#xff01;曾幾何時&#xff0c;自己或許也是一個認…

好好的活,簡簡單單過!

生命&#xff0c;每個人只有一次&#xff0c;或長或短&#xff1b;生活&#xff0c;每個人都在繼續&#xff0c;或悲或歡&#xff1b;人生&#xff0c;每個人都在旅途&#xff0c;或起或伏。人無完人&#xff0c;事無完美&#xff0c;有些小人&#xff0c;你不須計較&#xff0…

SQL Server 中創建數據庫、更改主文件組示例

以下示例在 SQL Server 實例上創建了一個數據庫。該數據庫包括一個主數據文件、一個用戶定義文件組和一個日志文件。主數據文件在主文件組中&#xff0c;而用戶定義文件組包含兩個次要數據文件。ALTER DATABASE 語句將用戶定義文件組指定為默認文件組。然后通過指定用戶定義文件…

lunixs 退出mysql_MySQL的基本操作

1、數據庫登錄格式&#xff1a;mysql -h主機地址 -u用戶名 -p用戶密碼 -P端口 -D數據庫 -e “SQL內容”[rootwulaoer ~]# mysql -uroot -p2、修改密碼格式&#xff1a;mysqladmin -u用戶名 -p舊密碼 password 新密碼[rootwulaoer ~]# mysqladmin -uroot password 123456注&…

交際中你所不知道的說話的12個技巧!

1.“有一說一”和“自以為是”不同&#xff0c;別把粗魯當成真性情與 他人相處&#xff0c;要遵循一個基本原則&#xff1a;己所不欲&#xff0c;勿施于人。你可以真摯地描述自己的感受&#xff0c;前提是不要帶有攻擊性&#xff0c;至于對他人做出評價和判斷&#xff0c;則需要…

寬客的人amp;amp;事件映射

看完《寬客》這本書&#xff0c;敘事介紹20世紀華爾街對沖基金、股票、投資者依賴股市從直覺交易數學家的早期演化、物理學家用數學模型開發過程中的交易&#xff0c;這些進入金融數學家、物理學家依靠大數據分析、稍縱即逝的交易機會來買入賣出&#xff1b;同一時候找出交易模…

社交中的黃金法則,你要細細體會品味

1&#xff0c;不要急著用你的嘴&#xff0c;來為你的眼睛辯護什么。因為天知道你的嘴說出什么來。2&#xff0c;假如有人朝你扔石頭&#xff0c;就收起來。因為那會是你日后建高樓的基石。3&#xff0c;能忍則忍&#xff0c;忍不了就改變&#xff0c;改變不了就認了哇。4&#…

Jsp筆記(1)

1. jsp頁面中出現中文亂碼怎么解決&#xff1f; 1 <% page contentType"text/html; charsetGB2312"%> 2 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> 用上面這兩行代碼去替換自動生成的代碼&#…

這些略帶幽默句子,笑的同時多感悟一下吧(收好)

1、窮&#xff0c;并不可怕&#xff0c;我怕窮著窮著就習慣了。2、世界上唯一不用努力&#xff0c;就能得到的只有年齡。3、我是你轉身就忘的路人甲&#xff0c;憑什么陪你蹉跎年華到天涯&#xff1f;4、世界上最快樂的事情就是吃&#xff0c;第二快樂的是待會再吃。5、琴棋書畫…

java 異常機制_深入理解Java異常處理機制

一、引子try…catch…finally恐怕是大家再熟悉不過的語句了&#xff0c;而且感覺用起來也是很簡單&#xff0c;邏輯上似乎也是很容易理解。不過&#xff0c;我親自體驗的“教訓”告訴我&#xff0c;這個東西可不是想象中的那么簡單、聽話。不信&#xff1f;那你看看下面的代碼&…

ThreadLocal http://blog.jobbole.com/20400/

d轉載于:https://www.cnblogs.com/hansongjiang/p/4875332.html

做人:失信是最大的破產!

一個人最大的破產是信用的破產&#xff01;哪怕你一無所有&#xff0c;但只要信用還在&#xff0c;就還有翻身的本金。保護好信用&#xff0c;珍惜別人給你的每一次信任&#xff01;因為有時候我們只有一次機會&#xff01;朋友有時候就像鈔票&#xff0c;有真也有假。我們需要…

c#和WIN32 調用

作者&#xff1a;劉鐵猛日期&#xff1a;2005-12-20關鍵字&#xff1a;C# .NET Win32 API版權聲明:本文章受知識產權法保護&#xff0c;如果閣下想轉載,在轉載的時候煩勞閣下連同在下的姓名一起轉載,并向bladeytom.com發一個Mail,我很想知道我的文章都去哪里了.謝謝.小序Win32 …

【干貨】微信公眾號運營必備工具(完整版)

做微信公眾號運營最基本的要素有兩點&#xff1a;一是內容要強大&#xff08;內&#xff09;&#xff0c;二是排版要美觀&#xff08;外&#xff09;。做好前者&#xff0c;你需要有充足的知識儲備以及精彩獨到的文筆作為支撐&#xff0c;而做好后者則相對簡單許多&#xff0c;…

java定時線程池_java 定時器線程池(ScheduledThreadPoolExecutor)的實現

前言定時器線程池提供了定時執行任務的能力&#xff0c;即可以延遲執行&#xff0c;可以周期性執行。但定時器線程池也還是線程池&#xff0c;最底層實現還是ThreadPoolExecutor&#xff0c;可以參考我的另外一篇文章多線程–精通ThreadPoolExecutor。特點說明1.構造函數public…

iOS 關于關鍵字高亮

- (NSMutableAttributedString *)colorStr: (NSString *)originalStr // originalStr : 需要高亮傳入的字符串 { NSMutableAttributedString *dataStr [[[NSMutableAttributedString alloc] initWithString:originalStr] autorelease]; for (int i 0; i < originalStr.l…