GOF之享元模式
面向對象的代價:
面向對象很好的解決了系統抽象問題,同時在大多數情況下,也不會損及系統的性能。但是,在某些特殊的應用中,由于對象的數量太大,采用面向對象會給系統帶來難以承受的內存開銷。比如圖形應用中的圖元等對象、字處理應用中的字符對象等。
動機(Motivation)
采用純粹對象方案的問題在于大量細粒度的對象會很快充斥在系統中,從而帶來很高的運行時代價--主要指內存需求方面的代價。
如何在避免大量細粒度對象問題的同時,讓外部客戶程序仍然能夠透明地使用面向對象的方式來進行操作?
意圖(Intent)
運用共享技術有效的支持大量細粒度的對象。
結構(Structure)
Flyweight模式的幾個要點:
面向對象很好的解決了抽象性的問題,但是作為一個運行在機器中的程序實體,我們需要考慮對象的代價問題。Flyweight模式主要解決面向對象的代價問題,一般不觸及面向對象的抽象性問題。
Flyweight采用對象共享的做法來降低系統中對象的個數,從而降低細粒度對象給系統帶來的內存壓力。在具體實現方面,要注意對象狀態的處理。
對象的數量太大從而導致對象內存開銷太大--什么樣的數量才算大?這需要我們仔細的根據具體情況進行評估,而不能憑空臆斷。
?
轉載于:https://www.cnblogs.com/pushudepu/p/6040880.html
總結
- 上一篇: 越南战争美国为什么打不赢?
- 下一篇: 一个最为简单的jquery 分页实现方法