JAVA 設計模式 享元模式

2021-09-22 06:28:00 字數 1139 閱讀 2542

用途

享元模式 (flyweight)

運用共享技術有效地支援大量細粒度的物件。

享元模式是一種結構型模式

結構

圖-享元模式結構圖

flyweight: 它是所有具體享元類的超類或介面,通過這個介面,flyweight 可以接受並作用於外部狀態。

abstract

class flyweight 

concreteflyweight:  是繼承 flyweight 超類或實現 flyweight 介面,並為內部狀態增加儲存空間。

class concreteflyweight 

extends flyweight 

}

unsharedconcreteflyweight: 指那些不需要共享的 flyweight 子類,因為 flyweight 介面共享成為可能,但它並不強制共享。

class unsharedconcreteflyweight 

extends flyweight 

}

flywightfactory:是乙個享元工廠,用來建立並管理 flyweight 物件。它主要是用來確保合理地共享 flyweight ,當使用者請求乙個 flyweight 時, flyweightfactory 物件提供乙個已建立的例項或建立乙個(如果物件不存在的話)。

class flywightfactory 

public flyweight getflyweight(string key) 

}測試**

public

class flyweightpattern 

}

執行結果

共享的flyweight : 1

共享的flyweight : 2

共享的flyweight : 3

不共享的flyweight : 4

Java 設計模式 享元模式

在介紹享元模式之前,先來看乙個問題。假設要你去做一款撲克牌遊戲,你會針對撲克牌設計一種怎樣的資料結構呢?因為撲克牌有四種花色,也即紅桃 heart 黑桃 spade 方塊 diamond 梅花 club 有 13 種不同的大小,也即 a k 還有大小王,所以這個類應該很好設計,如下所示 public...

java設計模式 享元模式

使用共享物件可有效地支援大量細粒度物件 因為分配太多的物件到應用程式中將有損程式的效能,同時還容易造成記憶體溢位.1.內部狀態是物件可共享出來的資訊,儲存在享元物件的內部並且不會隨環境的改變而改變.他們可以作為乙個物件的動態附加資訊,不必直接儲存在具體的某個物件中,屬於可以共享的部分.2.外部狀態是...

JAVA設計模式 享元模式

享元模式 運用共享技術有效地支援大量細粒度的物件。介面有方法,具體類實現介面中的方法,工廠生產該實體,若存在則直接返回,不存在則new乙個新的物件返回,無論客戶端呼叫多少次,只產生了乙個實體。享元模式可以避免大量非常相似類的開銷。在程式設計中,有時需要生成大量細粒度的類例項來表示資料。如果這些例項除...