場景:記憶體屬於稀缺資源,不要隨便浪費,如果有很多個完全相同或相似的物件,我們可以通過享元模式,節省記憶體
核心:享元模式以共享的方式高效地支援大量細粒度物件的重用
內部狀態:可以共享,不會碎環境變化而變化
外部狀態:不可以共享,會隨環境變化而改變
package com.imust.flyweight;
/** * 享元類
*@author zachary (為上帝所心儀的人)
*@date 2023年9月7日
*@project shejimoshi
*@package com.imust.flyweight
*/public
inte***ce
chessflyweight
/** * 具體的享元類 為內部狀態提供成員變數進行儲存
*@author zachary (為上帝所心儀的人)
*@date 2023年9月7日
*@project shejimoshi
*@package com.imust.flyweight
*/class concreatechess implements chessflyweight
@override
public
void
setcolor(string c)
@override
public string getcolor()
@override
public
void
display(coordinate c)
}
package com.imust.flyweight;
/** * 外部狀態 unsharedconcreateflyweight
*@author zachary (為上帝所心儀的人)
*@date 2023年9月7日
*@project shejimoshi
*@package com.imust.flyweight
*/public
class
coordinate
public
intgetx()
public
void
setx(int x)
public
intgety()
public
void
sety(int y)
}
package com.imust.flyweight;
/** * 外部狀態 unsharedconcreateflyweight
*@author zachary (為上帝所心儀的人)
*@date 2023年9月7日
*@project shejimoshi
*@package com.imust.flyweight
*/public
class
coordinate
public
intgetx()
public
void
setx(int x)
public
intgety()
public
void
sety(int y)
}
package com.imust.flyweight;
public
class client
}
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...
Java 設計模式 享元模式
在介紹享元模式之前,先來看乙個問題。假設要你去做一款撲克牌遊戲,你會針對撲克牌設計一種怎樣的資料結構呢?因為撲克牌有四種花色,也即紅桃 heart 黑桃 spade 方塊 diamond 梅花 club 有 13 種不同的大小,也即 a k 還有大小王,所以這個類應該很好設計,如下所示 public...