設計模式之享元模式

2021-09-10 04:47:51 字數 821 閱讀 1383

《魔法**目錄》中男主不斷的把一路上遇到的女性納入後宮,也跟曾遇到的女性碰撞著產生新的故事。這個例子非常適合來講享元模式。享元共享一些東西,比如這個人我遇到過了,就沒必要再新生成乙個物件納入後宮了因為我後宮已經存在了。

享元模式首先需要抽象的享元介面

public inte***ce iharem
具體的享元繼承了這個介面

public class harem implements iharem 

public string saylove()

}

下來需要乙個存放享元的工廠,該工廠中有個物件池,如果發現不存在就放入新生成物件放入池中。存在則直接在池中取出。

public class haremfactor 

result = new harem(key);

system.out.println("新出現的角色"+result.saylove());

harems.put(key,result);

return result;

}}

在某些地方也需要限制池中物件的個數這裡不做演示。

最後看看場景類

public class client 

}

執行結果:

新出現的角色茵蒂克絲說我好喜歡你

新出現的角色炮姐說我好喜歡你

遇到過的角色茵蒂克絲說我好喜歡你

新出現的角色神裂火織說我好喜歡你

新出現的角色五和說我好喜歡你

遇到過的角色炮姐說我好喜歡你

設計模式之享元模式

1 享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 2 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。3 思考 為什麼要有unsh...

設計模式之 享元模式

享元模式英文稱為 flyweight pattern 又譯為羽量級模式或者蠅量級模式。享元模式的定義為 採用乙個共享類來避免大量擁有相同內容的 小類 的開銷。這種開銷中最常見 直觀的影響就是增加了記憶體的損耗。享元模式以共享的方式高效的支援大量的細粒度物件,減少其帶來的開銷。在名字和定義中都體現出了...

設計模式之享元模式

享元模式運用共享技術有效地支援大量細粒度的物件。如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時應該考慮使用。物件的大多數狀態可以是外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件,此時也可以考慮用享元模式。享元模式uml圖如下 如下 使用者 cl...