《大話設計模式 享元模式》筆記

2021-09-02 02:36:30 字數 1301 閱讀 2493

1、享元模式(flyweight),運用共享技術有效的支援大量細顆粒度的物件。

2、享元模式結構圖

3、簡單**實現

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

public abstract class flyweight
concreteflyweight類是繼承或實現flyweight的類,為內部狀態增加儲存空間。

public class concreteflyweight  extends flyweight

}

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

public class concreteflyweight  extends flyweight

}

flyweightfactory。是乙個享元工廠,用來建立並管理flyweight物件。他主要用來確保合理的共享flyweight,當使用者請求乙個flyweight時,flyweightfactory物件提供乙個已建立的例項或建立乙個。

public class flyweightfactory 

//根據客戶端請求,獲得已生成的例項

public flyweight getflyweight(string key)

}

客戶端**

public class client 

}

4、內部狀態與外部狀態

1、享元物件內部並不會隨環境的改變而改變的共享部分,可以稱為是享元物件的內部狀態,而隨環境改變而改變的不可以共享的狀態就是外部狀態了。

2、享元模式可以避免大量非常相似的類的開銷。在程式設計中,有時需要生成大量細顆粒度的類例項來表示資料。如果發現這些例項除了幾個引數外基本都是相同的,有時就能夠大幅減少需要例項化的類的數量。如果能把那些引數移到類例項的外面,在方法呼叫時將他們傳遞進來,就可以通過共享大幅減少單個例項的數目。

5、應用

1、主要應用於底層開發。

2、如果乙個程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時就應該考慮使用;還有就是物件的額大多數狀態可以外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的物件取代很多組的物件,此時可以考慮使用享元模式。

大話設計模式 享元模式

享元模式可以避免大量非常相似類的開銷。在程式設計中,有時需要生成大量細粒度的類例項來表示資料。如果能發現這些例項除了幾個引數外基本上都是相同的,有時就能夠大幅度地減少需要例項化的類的數量。如果能把那些引數移到類例項的外面,在方法呼叫時將他們傳遞進來,就可以通過共享大幅度地減少單個例項的數目。所有具體...

java 享元模式(大話設計模式)

所有具體享元類的超類,接受並作用於外部狀態 author administrator public abstract class flyweight class concreteflyweight extends flyweight class unsharedconcreteflyweight e...

大話設計模式之享元模式

享元模式 運用共享技術有效地支援大量細粒度的物件。內部狀態與外部狀態 享元模式可以避免大量非常相類似類的開銷。在程式設計中,有時需要生成大量細粒度的類例項來表示資料。如果能發現這些例項除了幾個引數外基本都是相同的,有時就能夠受大幅度地減少需要例項化數量的類的數量。如果能把那些引數轉移到類例項的外面,...