设计一个简单的缓存容器
??? 在項(xiàng)目的開發(fā)中遇到一個(gè)這樣的問題:沒一個(gè)系統(tǒng)用戶要有很多與之關(guān)聯(lián)數(shù)據(jù),而由于一些頁面的加載是由這些數(shù)據(jù)來判斷過濾的,所以與數(shù)據(jù)庫交互加載這樣數(shù)據(jù)的時(shí)間變的不可忍受,尤其是大數(shù)據(jù)量的時(shí)候。所以一個(gè)比較簡(jiǎn)單但又實(shí)用的方法就是將這些數(shù)據(jù)緩存起來,供后來調(diào)用。
??? 在設(shè)計(jì)與實(shí)現(xiàn)這個(gè)簡(jiǎn)單緩存容器的時(shí)候,我想?yún)⒖家幌翸icrosoft的Application Block:Caching Framework,所以為了能使自己的設(shè)計(jì)水平提高,在這里我先把參考Caching Framework前的設(shè)計(jì)想法寫下來,以備在后面比較,希望能有大的收獲。
??? 在開發(fā)的過程中,采用迭代開發(fā)的思想,不是趕時(shí)髦,只是想讓自己持續(xù)的看到成果,不然的話會(huì)讓我失去信心的,主要迭代周期一起各迭代周期的內(nèi)容如下:
??? 一期:支持最基本的插入緩存數(shù)據(jù)、自定義鍵字段、根據(jù)鍵獲取緩存數(shù)據(jù)的方法。
??? 二期:支持緩存數(shù)據(jù)的過期、依賴屬性的應(yīng)用,處理緩存數(shù)據(jù)的過期與同步問題,為緩存數(shù)據(jù)添加同步支持。
??? 三期:重構(gòu)代碼以支持更廣的緩存數(shù)據(jù)應(yīng)用。
??? 下面我按照時(shí)間順序說明的我設(shè)計(jì)過程:
??? 一期:
????
??? 初期想法:設(shè)計(jì)一個(gè)CacheManager類,它有兩個(gè)方法,Add(object key,object value),Delete(object key),Get(object key),三個(gè)方法,內(nèi)部實(shí)現(xiàn)也就是基本的Cache方法包裝。
??? 參考了Caching Framework后的改進(jìn)想法:
??? 1.將Cache的管理功能與存儲(chǔ)分開,提取一個(gè)CacheManager來管理執(zhí)行諸如一些添加、刪除、獲取、清除的方法,添加一個(gè)CacheStorage類來處理存儲(chǔ),而且由于存儲(chǔ)方式可能有不同,所以設(shè)計(jì)一個(gè)接口,其他不同的實(shí)現(xiàn)方式來實(shí)現(xiàn)。
??? 2.包裝Cache項(xiàng),加入Metadata如:過期、依賴、回調(diào)、優(yōu)先級(jí)等方法。
轉(zhuǎn)載于:https://www.cnblogs.com/Masterpiece/archive/2004/11/24/67897.html
總結(jié)
以上是生活随笔為你收集整理的设计一个简单的缓存容器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [导入]对iis写权限的利用
- 下一篇: blog开张