設計模式(十二)享元模式

2021-09-20 00:09:43 字數 852 閱讀 2121

如果系統中可能存在大量相同的物件,那麼我們可以建立快取池之類的東西,將這些重複物件進行復用。這種設計模式就是享元模式。

假設有乙個遊戲,裡面需要汽車和電單車兩種載具。我們希望這些載具可以在遊戲中復用,而不是每次都建立新物件。所以這個例子就可以使用享元模式來做。

首先是汽車和電單車的抽象。我們使用visible介面表示這個物件將要在遊戲中顯示。

public inte***ce visible 

public class car implements visible

public int getid()

@override

public void show()

}public class motorcycle implements visible

public int getid()

@override

public void show()

}

然後是乙個快取池,充當著這些物件的工廠。我們可以將池中的物件復用。這裡直接將物件放到了hashmap中了。

public class objectpool 

public car getcar(int id)

public void putmotorcycle(motorcycle motorcycle)

public motorcycle getmotorcycle(int id)

}

最後再來測試一下。可以看到物件被成功的復用了。

public void run()

設計模式 十二 享元模式

設計模式 一 設計六大原則 設計模式 二 單例模式的七種寫法 設計模式 三 建造者模式 設計模式 四 簡單工廠模式 設計模式 五 觀察者模式 設計模式 六 模式 設計模式 七 裝飾模式 設計模式 八 外觀模式 設計模式 九 模版方法模式 設計模式 十 工廠方法模式 設計模式 十一 策略模式 設計模式...

(十二)設計模式 享元模式

flyweight 運用共享技術有效地支援大量細粒度的物件。如果要做三個產品展示 三個部落格的 相當於是六個 類的例項,每乙個 都需要乙個對應的伺服器資源,而本質上他們都是同一套 如果 增多,例項也就隨著增多,這對伺服器的資源浪費得很嚴重,而且都不是屬於高訪問量的 如果整合到乙個 中,共享其相關的 ...

(十二)享元模式

public inte ce flyweight public class concreteflyweight implements flyweight public string getname public void setname string name public void execute...