Java學設計模式之享元模式

Kllin發表於2024-05-10

一、享元模式概念

1.1 什麼是享元模式

享元模式是一種結構型設計模式,旨在透過共享物件來最大程度地減少記憶體使用和提高效能。在享元模式中,物件被設計成可共享的,以便在需要時能夠被多個不同的上下文使用。

結構

享元模式通常包含以下幾個要素:

  1. Flyweight(享元): 定義了共享物件的介面,包含了需要被共享的狀態。透過這些介面,享元物件可以接受並作用於外部狀態。

  2. ConcreteFlyweight(具體享元): 實現了享元介面,表示可被共享的具體物件。具體享元物件中包含了內部狀態,而外部狀態則由客戶端在使用時傳遞給享元物件。

  3. UnsharedConcreteFlyweight(非共享具體享元): 不可被共享的具體物件,通常是一些不可複用的物件,其中包含了不適合被共享的狀態。

  4. FlyweightFactory(享元工廠): 負責建立和管理享元物件。當客戶端請求一個享元物件時,享元工廠負責檢查是否已經有相應的享元物件存在,如果存在則返回已有的物件,如果不存在則建立一個新的享元物件並將其加入到享元池中。

  5. Client(客戶端): 使用享元模式的客戶端。客戶端通常會維護一些外部狀態,並在需要時將這些狀態傳遞給享元物件。

二、享元模式程式碼

三、總結

享元模式的優點包括:

  • 大大減少了物件的數量,節省了記憶體空間。
  • 提高了系統的效能,因為共享物件可以被多個客戶端同時使用。

缺點包括:

  • 需要對外部狀態進行管理,可能會增加系統的複雜性。
  • 共享物件的狀態改變可能會影響到其他使用該物件的客戶端。

相關文章