結構型模式 亨元模式

2021-07-04 01:45:45 字數 1221 閱讀 7255

亨元模式

使用共享物件可以有效地支援大量細粒度的物件

亨元模式以共享的方式高效地支援大量的細粒度物件。亨元物件能做到共享的關鍵是區分內部狀態(internal state

)和外部狀態(

external state

)。內部狀態是儲存在亨元物件內部的、可以共享的資訊,並且不會隨環境改變而變化。

外部狀態是歲環境改變而改變且不可以共享的狀態。亨元物件的外部狀態必須由客戶端儲存,並在亨元物件建立之後,在需要的時候傳入到亨元物件內部。

亨元模式角色

抽象亨元(

flyweight

)角色:該角色對亨元類進行抽象,需要外部狀態的操作可以通過引數形式將外部狀態傳入;

具體亨元(

concreteflyweight

)角色:該角色實現抽象亨元定義的業務,主要亨元物件的內部狀態必須與環境無關,從而使亨物件可以在內部共享;

亨元工廠(

flyweightfactory

)角色:該角色就是構造乙個池容器,負責建立和管理亨元角色,並且提供從池容器中獲得物件的方法,保證亨元物件可以被系統適當的共享。當乙個客戶端物件請求乙個亨元物件時,亨元物件工廠角色會檢查系統中是否已經存在乙個符合的要求的亨元物件,如果存在則提供整個已有的亨元物件,否則建立乙個合適的亨元物件。

亨元模式的優缺點

大幅減少記憶體中物件的數量,降低程式記憶體的占用,提高效能。但是,相應付出代價也很高;

亨元模式增加了系統的複雜性,需要分出外部狀態和內部狀態,而且內部狀態固化特性,不應該隨外部狀態改變而改變,則使得程式的邏輯複雜化;

亨元模式將亨元物件的狀態外部化,而讀取外部狀態使得執行時間長。

使用場景

系統中有大量的相似物件,這些物件占用大量的記憶體;

細粒度的物件都具備接近的外部狀態,而且內部狀態和環境無關,即物件沒有特定身份;

需要緩衝池的場景。

public inte***ce flyweight

public class flyweightfactory 

return fly;}}

設計模式 結構型模式亨元模式

介面shape定義亨元被外部呼叫的方法 具體的亨元實現circle實現介面shape並實現自定義方法 工廠類shapefactory 在呼叫getcircle 的時候從維護的hashmap circlemap 中根據主鍵獲取唯一身份標識的處理類,或者直接取出乙個使用,使用完成之後歸還處理物件 案例1...

結構型模式 享元模式

七大結構型模式之六 享元模式。姓名 享元模式 英文名 flyweight pattern 價值觀 共享富貴 個人介紹 use sharing to support large numbers of fine grained objects efficiently.使用共享物件可有效地支援大量的細粒度...

結構型模式 享元模式

文章首發 結構型模式 享元模式 七大結構型模式之六 享元模式。姓名 享元模式 英文名 flyweight pattern 價值觀 共享富貴 個人介紹 use sharing to support large numbers of fine grained objects efficiently.使用...