成人免费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-01-21 05:34:14

設計模式建造者

2021-03-05 07:57:41

設計模式橋接

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設計模式開發

2021-04-19 21:25:48

設計模式到元

2022-01-12 13:33:25

工廠模式設計

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技術棧公眾號

主站蜘蛛池模板: 久久婷婷色 | 亚洲一区二区中文字幕 | 午夜激情视频在线 | 欧美在线视频一区二区 | 国产激情精品一区二区三区 | 国产午夜精品一区二区三区在线观看 | 国产精品不卡一区 | 欧美精品在线一区二区三区 | 日韩在线大片 | 欧美a级成人淫片免费看 | www日本高清视频 | 日本欧美在线观看视频 | 黄视频国产 | 成av在线| 一区二区三区免费 | h视频在线免费 | 91精品久久久久久久久中文字幕 | 亚洲三区视频 | 欧美一区二区三区在线观看 | 色视频www在线播放国产人成 | 亚洲在线视频 | 三级在线免费 | 成人99 | 欧美精品久久久久久 | 国产性色视频 | 久久九九99 | 午夜理伦三级理论三级在线观看 | 亚洲成年在线 | 91精品欧美久久久久久久 | 亚洲欧美国产毛片在线 | 99reav| 亚洲一区二区精品视频在线观看 | 欧美日韩专区 | 成人二区 | 中文字幕第二十页 | 玖玖色在线视频 | 欧美成人激情 | 国产一区二区免费 | 国产高清视频 | 久久亚洲精品视频 | 日韩免费 |