設計模式之 享元模式

2021-10-10 10:18:20 字數 1266 閱讀 7622

主要用於減少建立物件的數量,以減少記憶體占用和提高效能, 它提供了減少物件數量從而改善應用所需的物件結構的方式。享元模式嘗試重用現有的同類物件,如果未找到匹配的物件,則建立新物件

內部狀態

不會隨環境的改變而有所不同,是可以共享的

外部狀態

不可以共享的,它隨環境的改變而改變的,因此外部狀態是由客戶端來保持(因為環境的變化一般是由客戶端引起的)

角色

抽象享元角色:為具體享元角色規定了必須實現的方法,而外部狀態就是以引數的形式通過此方法傳入

具體享元角色:實現抽象角色規定的方法。如果存在內部狀態,就負責為內部狀態提供儲存空間

享元工廠角色:負責建立和管理享元角色。要想達到共享的目的,這個角色的實現是關鍵

客戶端角色:維護對所有享元物件的引用,而且還需要儲存對應的外部狀態

抽象介面

//抽象介面,

public abstract class cloudwebsite

介面實現

public class concretewebsite extends cloudwebsite 

​ @override

public void run(company company)

}

工廠

public class websitefactory else 

}/**

* 獲取分類個數

* @return

*/public int getwebsitecategorysize()

}

public class company 

public void setname(string name)

​ public company(){}

​ public company(string name)

}

測試

public static void main(string args)
1、減少物件的建立,降低記憶體中物件的數量,降低系統的記憶體,提高效率

2、減少記憶體之外的其他資源占用

1、關注內、外部狀態、關注執行緒安全問題

2、使系統、程式的邏輯複雜化

設計模式之享元模式

1 享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 2 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。3 思考 為什麼要有unsh...

設計模式之 享元模式

享元模式英文稱為 flyweight pattern 又譯為羽量級模式或者蠅量級模式。享元模式的定義為 採用乙個共享類來避免大量擁有相同內容的 小類 的開銷。這種開銷中最常見 直觀的影響就是增加了記憶體的損耗。享元模式以共享的方式高效的支援大量的細粒度物件,減少其帶來的開銷。在名字和定義中都體現出了...

設計模式之享元模式

享元模式運用共享技術有效地支援大量細粒度的物件。如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時應該考慮使用。物件的大多數狀態可以是外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件,此時也可以考慮用享元模式。享元模式uml圖如下 如下 使用者 cl...