在系統設計中,經常會使用「池」的概念。比如資料庫連線池,
socket
連線池,執行緒池,元件佇列。「池」可以節省物件重複建立和初始化所耗費的時間,可以簡化物件獲取和使用的過程。對於那些被系統頻繁請求和使用的物件,如果使用這種機制,可以使系統效能得到很大提高。特別象資料庫連線這種物件,客戶端與資料庫伺服器端建立連線時,是比較慢的,如果每次進行資料庫操作,都要先進行資料庫連線,系統效率將非常低下。
「池」的概念就是將被使用的物件事先建立好,儲存在列表中,供客戶端取用。當客戶端取得乙個物件時,這個物件就已經是按照特定上下文環境初始化好,馬上即可使用的了。當客戶端使用完畢,需要將物件歸還給「池」,最後,在系統生命期結束時,由「池」統一釋放這些物件。從另乙個概念上來說,這也是一種「以空間換時間」的做法,我們在記憶體中儲存一系列整裝待命的物件,供人隨時差遣。與系統效率相比,這些物件所占用的記憶體空間太微不足道了。
「池」的結構是通用的,就是不管他裡面儲存的是哪一種物件,他的工作方法都基本不變。無非是初始化一系列物件,然後提供乙個獲取可用物件,乙個歸還物件的介面。
基於這種考慮,我們可以建立乙個通用的物件池,只要某些物件符合「一些基本要求」(這個基本要求,可以使用
inte***ce
模式來限定),就可以使用通用物件池來訪問和管理。
用c#建立通用物件池[2]
用C 建立通用物件池 2
建立乙個介面,用於限定物件池中所儲存的物件的基本行為 public inte ce idynamicobject 我們在物件池中存放的物件,必須繼承上面的介面,並實現介面定義的每乙個方法。create方法中,使用者可以用來建立實際的物件,如建立資料庫連線,並開啟這個連線 getinnerobject...
Unity 通用 物件池管理
一般情況下我們使用物件池是物體的建立和管理。但在很多情況下需要批量建立的物體需要做一些邏輯處理,這樣我們需要記錄物件池對應的資料狀態。所以我們就直接把物件作為管理物件,這樣我們可以在物件裡面做一些邏輯處理還能便於物體管理。作為物件管理類,那麼我們必須要乙個同乙個父類作為管理的類別。在父類裡面包含一些...
java 通用物件池的實現
本文以apache common pools為例 pooledobject 可被池化的物件 預設實現defaultpooledobject,裡面封裝了乙個真正的使用者需要池化的物件object。其中defaultpooledobject裡面有兩個方法 exception borrowedby 用於記...