------------------------------ 享元模式(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...