成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

常用設計模式系列之——享元模式

開發 架構
簡單點描述一下就是一批對象中既有相同的內容也有不同的內容,相同的內容采用共享的方式,不同的內容通過動態傳遞的方式,來盡量減少對象的產生。這里需要理解的一點是,這多個對象其實底層對應的是同一個對象,物理地址是一個。

[[327371]]

 Hello 大家好,我是鴨血粉絲,今天周六,你是在休息學習還是在加班呢?

今天阿粉要跟大家分享的是結構型模式之享元模式,既然享元模式是屬于結構性模式中的一種,那自然是用來組織代碼,調整相應的代碼結構來達到效果的,下面我們一起來看一下吧。

[[327372]]

享元模式

首先常規操作,我們先看一下什么是享元模式,維基百科解釋:享元模式(英語:Flyweight Pattern)是一種軟件設計模式。它使用共享物件,用來盡可能減少內存使用量以及分享資訊給盡可能多的相似物件;它適合用于當大量物件只是重復因而導致無法令人接受的使用大量內存。通常物件中的部分狀態是可以分享。常見做法是把它們放在外部數據結構,當需要使用時再將它們傳遞給享元。

關鍵字:減少內存,共享物件,外部數據

簡單點描述一下就是一批對象中既有相同的內容也有不同的內容,相同的內容采用共享的方式,不同的內容通過動態傳遞的方式,來盡量減少對象的產生。這里需要理解的一點是,這多個對象其實底層對應的是同一個對象,物理地址是一個。

享元模式使用場景

享元模式的使用場景還是比較多的,最常見的一個場景就是 Java JDK 里面的 String 字符串類,因為 JVM 中有常量池,常量池的實現就是一種享元模式,避免多個相同對象的存在。另外線程池以及很多用到緩沖池的地方都采用了享元模式,比如 Integer 類中默認緩存了-128 -127 之間的整數,等等場景。

在演示享元模式之前,我們要先了解享元模式中涉及到的幾個角色名稱

  1. 抽象享元類:通常是一個接口,主要對外提供修改內部數據的接口
  2. 具體享元類:享元的實現類,通常存儲在內存中,便于使用
  3. 享元工廠類:對外創建具體享元類

下面我們通過一個簡單的示例來演示一下享元模式,我們創建一個接口類,然后寫一個實現類,再通過一個工廠來創建享元類,相關代碼如下:

UML 圖解

代碼演示

我們先創建一個接口類 IFlyweight.java,里面包含一個設置寬度的方法,如下

然后編寫一個實現類 FlyweightImpl.java 來實現接口,并且在構造函數中傳遞一個 Color 對象

第三步我們再編寫一個工廠類 FlyweightFactory.java,里面有一個 Color 對象的本地緩存,對于相同的顏色只保存一個對象。

顏色輔助類 Color.java

最后寫一個測試應用類 FlyweightDemo.java

上面測試類中,我們分別定義了兩種顏色的三個對象,由于相同顏色的對象已經被緩存了,所以我們輸出的結果如下:

輸出結果

“從上面的運行結果中,我們可以看出,flyweight0 與flyweight1 其實是同一個對象,雖然他們的 width 和 height 屬性值不一樣,但是他們的底層對應的是同一個對象本身。這就是享元模式的核心內容,通過共享變量,來減少對象的產生,從而減少內存的使用。

總結

今天跟大家分享了一下設計模式中的結構型模式之享元模式,享元模式在我們日常使用的框架和組件都有很廣泛的應用,希望通過這篇文章能夠幫助大家加深或者理解享元模式,歡迎大家一起討論交流,談談你所知道的還有哪些框架和組件中使用到了享元模式。

 

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2024-02-27 11:59:12

享元模式對象

2021-06-09 08:53:34

設計模式策略模式工廠模式

2012-01-13 15:59:07

2021-03-05 07:57:41

設計模式橋接

2021-01-21 05:34:14

設計模式建造者

2021-06-22 15:27:13

設計模式迭代器模式Java

2023-03-06 08:46:12

2021-07-08 11:28:43

觀察者模式設計

2021-02-18 08:39:28

設計模式場景

2024-04-12 12:10:18

Python設計模式開發

2022-01-12 13:33:25

工廠模式設計

2021-04-19 21:25:48

設計模式到元

2020-11-04 08:54:54

狀態模式

2020-11-03 13:05:18

命令模式

2020-10-23 09:40:26

設計模式

2022-06-20 08:16:42

享元模式優化系統內存

2021-09-29 13:53:17

抽象工廠模式

2022-01-14 09:22:22

設計模式橋接

2020-10-19 09:28:00

抽象工廠模式

2020-10-21 14:29:15

原型模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 69视频在线播放 | 密乳av| 日韩www | 黑色丝袜三级在线播放 | 国产综合精品一区二区三区 | 久久久久国产一区二区三区 | 欧美一区二区三区久久精品 | 中文在线一区 | 亚洲精品一二三区 | 国产日韩精品在线 | 日本精品视频在线 | 五月激情综合网 | 一区二区视频在线 | 亚洲综合无码一区二区 | 91玖玖 | 亚洲一区在线日韩在线深爱 | 欧美精品一区在线 | 免费日韩av网站 | www.一区二区 | 无人区国产成人久久三区 | 欧美精品久久久久久久久久 | 成人免费淫片aa视频免费 | 黄色一级大片在线观看 | www.玖玖玖 | 国产精品99精品久久免费 | 久久久蜜桃一区二区人 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 3p视频在线观看 | 丁香综合 | 伊人伊人伊人 | 日一日操一操 | 99久久精品国产毛片 | 国产精品福利网站 | 欧美视频一区二区三区 | 在线一区视频 | 久久伊人精品 | 亚洲狠狠爱| 一级高清 | 精品中文字幕视频 | 亚洲一区二区三区四区五区午夜 | 精品国产欧美 |