享元模式,運用共享技術有效地支援大量細粒度的物件。享元模式主要用於減少建立物件的數量,以減少記憶體占用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。
小菜最近接了幾個小型外包專案,主要是給一些私營業主做**。事實上很多客戶都需要這樣的**,但要求不太一樣,有的人希望是新聞發布形式,有人希望是部落格形式。可是每個**租用乙個空間,費用上很難降低。萬能的大鳥今天來教他享元模式,幫他解決這一問題。
//**抽象類
abstract class website
//具體**類
class concretewebsite : website
public override void use(user user)
}
//使用者
public class user
public string name}}
//**工廠類
class websitefactory
//獲得**分類總數
public int getwebsitecount()
}
//客戶端
關係介紹
享元類(flyweight)是所有具體享元類(concreteflyweight)的介面,是其父類。享元工廠和享元類之間是聚合關係,享元類擁有享元工廠類。客戶端(client)既和具體享元類是關聯關係,也和享元工廠類是關聯關係。
flyweight(享元類):通過這個介面,享元類可以接受並作用於外部狀態。
concreteflyweight(具體享元類):是繼承享元類或實現享元類的介面,並為內部狀態增加儲存空間。
unsharedconcreteflyweight(不共享具體享元類):是指那些不需要共享的享元類子類。因為享元類介面共享成為可能,但它並不強制共享。
flyweightfactory(享元工廠):用來建立並管理享元類物件。
1.大大減少物件的建立,降低系統的記憶體,使效率提高。
1.如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時就應該考慮使用
2.物件的大多數狀態可以外部狀態,如果刪除物件的外部狀態,那麼可用相對較少的共享物件取代很多組物件
FlyWeight 享元模式
include include include using namespace std class flyweight virtual flyweight m vector.clear class flyweightfactorya public flyweightfactory flyweight...
享元模式 Flyweight
享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 c 實現如下 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。思考 為什麼要有uns...
享元模式 flyweight
flyweight是輕量級的意思,中文這邊翻譯成享元,更容易讓人理解一些。享元模式是為了應對大量細粒度物件重複的問題。程式中存在大量細粒度的物件,每次要使用時都必須建立乙個新的物件,既影響了執行效率又增加了記憶體消耗。於是有了享元模式,享元模式提取出這些細粒度物件中間公共的狀態 屬性,我的理解 只生...