設(shè)計(jì)模式第九篇-結(jié)構(gòu)型模式【享元模式】

設(shè)計(jì)模式案例分析-github

一、什么是享元模式?

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

? ?通俗理解: 就是使用已經(jīng)存在的對(duì)象,而非再去創(chuàng)建對(duì)象,項(xiàng)目中其實(shí)我們經(jīng)常用,只是不知道其實(shí)是享元模式,比如使用HashMap緩存鍵值對(duì),當(dāng)去創(chuàng)建對(duì)象是,去map中查找是否存在鍵,如果存在,直接返回對(duì)象,否則創(chuàng)建新的對(duì)象,并且放到map中。當(dāng)然這只是享元模式的一個(gè)簡(jiǎn)單案例。

二、角色?

? ? ?1、抽象享元對(duì)象(可無(wú))

? ? ?2、具體享元對(duì)象—>需要共享的對(duì)象?

? ? ?3、享元對(duì)象的工廠—>創(chuàng)建對(duì)象,緩存對(duì)象

三、使用場(chǎng)景?

? ? 1、系統(tǒng)有大量相似對(duì)象。 2、需要緩沖池的場(chǎng)景。

三、案例? 比如隨機(jī)創(chuàng)建獲取一個(gè)圓形。

? 角色一: 抽象享元對(duì)象: IShape

? 角色二: 具體享元對(duì)象: Circle

? 角色三: 享元工廠

public interface IShape {

void draw();

}

public class Circle implements IShape {

private int radius;

? ? public Circle(int radius) {

this.radius = radius;

? ? }

@Override

? ? public void draw() {

Log.i("zqr", "繪制了一個(gè)半徑為:" +radius);

? ? }

}

public class CircleFactory {

private static HashMaphashMap =new HashMap<>();

? ? public static IShapegetCircle(int radius) {

// 沒必要每次都創(chuàng)建,可以判斷存在半徑為radius的圓,就使用已有的

? ? ? ? Circle circle;

? ? ? ? synchronized (hashMap) {

circle =hashMap.get(radius);

? ? ? ? ? ? if (circle ==null) {

circle =new Circle(radius);

? ? ? ? ? ? ? ? hashMap.put(radius, circle);

? ? ? ? ? ? }

}

return circle;

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 場(chǎng)景問題# 1.1 加入權(quán)限控制## 考慮這樣一個(gè)問題,給系統(tǒng)加入權(quán)限控制,這基本上是所有的應(yīng)用系統(tǒng)都有的功能...
    七寸知架構(gòu)閱讀 2,591評(píng)論 1 57
  • 本文首發(fā)于個(gè)人博客:Lam's Blog - 談?wù)?3種設(shè)計(jì)模式在Android源碼及項(xiàng)目中的應(yīng)用,文章由Mark...
    格子林ll閱讀 4,773評(píng)論 1 105
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,692評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • 風(fēng)很輕,夢(mèng)很美。 淡淡的人生,無(wú)常的心境。 著了新衣,失了舊人。 看不到的地方,我的心,你的情。 愁怨太深,多了矯...
    默淺閱讀 196評(píng)論 1 3

友情鏈接更多精彩內(nèi)容