JAVA設計模式之享元模式

2021-08-07 21:55:21 字數 1806 閱讀 9967

場景:記憶體屬於稀缺資源,不要隨便浪費,如果有很多個完全相同或相似的物件,我們可以通過享元模式,節省記憶體

核心:享元模式以共享的方式高效地支援大量細粒度物件的重用

內部狀態:可以共享,不會碎環境變化而變化

外部狀態:不可以共享,會隨環境變化而改變

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...