java常用設計模式之享元模式

2021-08-31 17:12:00 字數 1066 閱讀 9881

------------------------------ 享元模式(flyweight) -------------------------------

(1)主要用於建立物件時,運用共享技術,減少物件對記憶體的占用.乙個提高程式效率和效能的模式,會大大加快程式的運

行速度.

就是說在乙個系統中如果有多個相同的物件,那麼只共享乙份就可以了,不必每個都去例項化乙個物件。

flyweight(享元)模式中常出現factory模式。flyweight的內部狀態是用來共享的,flyweight factory負責維護乙個對

象儲存池(flyweight pool)來存放內部狀態的物件。

flyweight的關鍵思路,在於:

新建物件時:

先到hashtable中進行獲取-->判斷取得物件是否為空-->若是,則新建此物件,且放回hashtable -->若存在,則共享原來

的物件.

(2)例項: (與靜態工廠模式進行對比)

public inte***ce car

class bmwcar implements car

} class fordcar implements car

} class ca***ctory

if("ford".equals(name))

return car; }

}class carflyweightfactory

} if("ford".equals(name))

} return car; }

public int getnumber() }

public class test

else

system.out.println("車的數量是:"+carflyweightfactory.getnumber()); }

}輸出:

this is the fordcar .

this is the fordcar .

同一部車來的

JAVA設計模式之享元模式

場景 記憶體屬於稀缺資源,不要隨便浪費,如果有很多個完全相同或相似的物件,我們可以通過享元模式,節省記憶體 核心 享元模式以共享的方式高效地支援大量細粒度物件的重用 內部狀態 可以共享,不會碎環境變化而變化 外部狀態 不可以共享,會隨環境變化而改變 package com.imust.flyweig...

java設計模式之享元模式

享元模式,顧名思義,就是共享同乙個物件。舉個簡單的例子 integer i 1 integer j 1 system.out.println i j true integer a 200 integer b 200 system.out.println a b false對於為啥會出現這種情況,可以...

java設計模式之享元模式

uml設計 定義及使用場景 利用共享的方式解決大量建立銷毀導致額外開銷 示例 構建享元角色介面 public inte ce flyweight 構建具體享元類 public class concreteflyweight implements flyweight 構建享元工廠 public cla...