0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)計(jì)模式結(jié)構(gòu)性:享元模式

冬至子 ? 來(lái)源:碼農(nóng)架構(gòu) ? 作者:小智 ? 2023-06-08 17:32 ? 次閱讀

享元模式(Flyweight Pattern)主要用于減少創(chuàng)建對(duì)象的數(shù)量,以減少內(nèi)存占用和提高性能。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它提供了減少對(duì)象數(shù)量從而改善應(yīng)用所需的對(duì)象結(jié)構(gòu)的方式。

享元模式嘗試重用現(xiàn)有的同類對(duì)象,如果未找到匹配的對(duì)象,則創(chuàng)建新對(duì)象

結(jié)構(gòu)圖

圖片

角色與理解

  • 享元模式共分為四種角色:
  • Flyweight (抽象享元類):通常是一個(gè)接口或者是抽象類,在抽象享元類中聲明了共享享元類的公共方法,通過(guò)這些方法可以訪問(wèn)享元類的內(nèi)部數(shù)據(jù)(內(nèi)部狀態(tài)),也可以設(shè)置享元類的外部數(shù)據(jù)(外部狀態(tài))
  • Concrete Flyweight (共享具體享元類):實(shí)現(xiàn)抽象享元類,其實(shí)例稱為享元對(duì)象,一般為單例模式,提供唯一的享元對(duì)象
  • UnsharedConcrete Flyweight (非共享具體享元類):實(shí)現(xiàn)抽象享元類,但是不共享,通過(guò)構(gòu)造函數(shù)進(jìn)行實(shí)例化
  • Flyweight Factory (享元工廠類):創(chuàng)建并管理享元對(duì)象,以內(nèi)部的鍵值對(duì)結(jié)構(gòu)存儲(chǔ)享元對(duì)象
  • 共享具體享元類與非共享具體享元類實(shí)現(xiàn)抽象享元類,能夠保證他們對(duì)外具有一致的行為接口,為客戶端的使用提供了便利,客戶端通過(guò)享元工廠類獲取共享享元對(duì)象。
  • 享元工廠類返回的享元對(duì)象都是只有內(nèi)部狀態(tài)的享元對(duì)象,通過(guò)客戶端操作添加外部狀態(tài)

核心代碼

  • 抽象享元類

圖片

  • 具體享元類

圖片

  • 享元工廠類

圖片

  • 外部狀態(tài)類

圖片

  • 客戶端

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7434

    瀏覽量

    163519
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    莊園農(nóng)場(chǎng)游戲平臺(tái)app定制

    ,尊莊園農(nóng)場(chǎng)游戲平臺(tái)模式定制   1、尊莊園   10蘋果每天產(chǎn)1個(gè)尊幣15天收獲15個(gè)尊
    發(fā)表于 10-08 15:05

    理解模式

    設(shè)計(jì)模式-模式
    發(fā)表于 04-20 07:14

    優(yōu)化電動(dòng)汽車的結(jié)構(gòu)性

    優(yōu)化電動(dòng)汽車的結(jié)構(gòu)性能以提高效率和安全迅速增長(zhǎng)的全球電動(dòng)汽車(EV)市場(chǎng)預(yù)計(jì)到2027年將達(dá)到8028億美元。在電池和高壓電子設(shè)備的驅(qū)動(dòng)下,電動(dòng)汽車的運(yùn)行和維護(hù)成本往往低于傳統(tǒng)汽車,幾乎不會(huì)產(chǎn)生
    發(fā)表于 09-17 08:10

    STM32的結(jié)構(gòu)和啟動(dòng)模式

    STM32的結(jié)構(gòu)和啟動(dòng)模式需要的來(lái)下載哦。
    發(fā)表于 03-31 17:36 ?46次下載

    基于信息模式匹配方法

    有效的描述形式、處理耗時(shí)等缺點(diǎn),極大地阻礙了結(jié)構(gòu)信息的使用.為了充分利用結(jié)構(gòu)信息,提出一種基于信息模式匹配方法(IU_Based),該方法首先將
    發(fā)表于 01-23 15:29 ?0次下載

    莊園游戲模式開(kāi)發(fā)

      尊莊園軟件系統(tǒng)開(kāi)發(fā)【185.7630.7194微電龍梓】,尊莊園游戲模式開(kāi)發(fā),尊莊園系統(tǒng)開(kāi)發(fā)定制,尊莊園軟件開(kāi)發(fā)定制,尊
    發(fā)表于 10-09 14:05 ?182次閱讀

    設(shè)計(jì)模式結(jié)構(gòu)性:適配器模式

    適配器模式(Adapter Pattern)是作為兩個(gè)不兼容的接口之間的橋梁。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的功能。
    的頭像 發(fā)表于 06-07 11:56 ?724次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:適配器<b class='flag-5'>模式</b>

    設(shè)計(jì)模式結(jié)構(gòu)性:組合模式

    組合模式(Composite Pattern),又叫部分整體模式,是用于把一組相似的對(duì)象當(dāng)作一個(gè)單一的對(duì)象。
    的頭像 發(fā)表于 06-08 10:34 ?1206次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:組合<b class='flag-5'>模式</b>

    設(shè)計(jì)模式結(jié)構(gòu)性:橋接模式

    橋接模式不是將兩個(gè)不相干的類鏈接,而是將一個(gè)需要多維度變化的類拆分成抽象部分和實(shí)現(xiàn)部分,并且在抽象層對(duì)兩者做組合關(guān)聯(lián),是用組合的方式來(lái)解決繼承的問(wèn)題。
    的頭像 發(fā)表于 06-08 10:49 ?748次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:橋接<b class='flag-5'>模式</b>

    設(shè)計(jì)模式結(jié)構(gòu)性:門面模式

    門面模式,是指提供一個(gè)統(tǒng)一的接口去訪問(wèn)多個(gè)子系統(tǒng)的多個(gè)不同的接口,它為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的高層接口。
    的頭像 發(fā)表于 06-08 14:28 ?641次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:門面<b class='flag-5'>模式</b>

    設(shè)計(jì)模式結(jié)構(gòu)性:代理模式

    在代理模式(Proxy Pattern)中,一個(gè)類代表另一個(gè)類的功能。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式。
    的頭像 發(fā)表于 06-09 15:27 ?807次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:代理<b class='flag-5'>模式</b>

    如何通過(guò)設(shè)計(jì)模式來(lái)節(jié)省內(nèi)存

    相信大家日常開(kāi)發(fā)過(guò)程中,一個(gè)優(yōu)秀的程序猿寫出的代碼一定要節(jié)省空間的,比如節(jié)省內(nèi)存,節(jié)省磁盤等等。那么如何通過(guò)設(shè)計(jì)模式來(lái)節(jié)省內(nèi)存呢? 1、什么是模式? Use sharing to
    的頭像 發(fā)表于 10-09 10:31 ?493次閱讀
    如何通過(guò)設(shè)計(jì)<b class='flag-5'>模式</b>來(lái)節(jié)省內(nèi)存

    5G技術(shù)和電動(dòng)汽車會(huì)推動(dòng)結(jié)構(gòu)性增長(zhǎng)嗎?.zip

    5G技術(shù)和電動(dòng)汽車會(huì)推動(dòng)結(jié)構(gòu)性增長(zhǎng)嗎?
    發(fā)表于 01-13 09:06 ?1次下載

    存儲(chǔ)器結(jié)構(gòu)性分道篇.zip

    存儲(chǔ)器結(jié)構(gòu)性分道篇
    發(fā)表于 01-13 09:07 ?1次下載

    汽車行業(yè):短期關(guān)注芯片短缺改善,長(zhǎng)期布局結(jié)構(gòu)性機(jī)會(huì).zip

    汽車行業(yè):短期關(guān)注芯片短缺改善,長(zhǎng)期布局結(jié)構(gòu)性機(jī)會(huì)
    發(fā)表于 01-13 09:07 ?2次下載