需求:
對(duì)某一組在持續(xù)變化的數(shù)據(jù)進(jìn)行一系列的組操作(show,delete,add......)
類似于加鎖機(jī)制
問題:
在這一組操作過程中,數(shù)據(jù)本身也是在不停變化的(行車記錄儀的視頻是時(shí)時(shí)在錄的),那么我們?cè)诓僮鬟^程中
是否要對(duì)這個(gè)過程中的數(shù)據(jù)的改變做出反應(yīng)呢?
是:
1.用戶本身可能只是想操作在這一組操作開始時(shí)的那些數(shù)據(jù),而不是時(shí)時(shí)的數(shù)據(jù)集合。
2.如果每次操作都要更新數(shù)據(jù),對(duì)于性能來說是個(gè)考驗(yàn)(參考內(nèi)容觀察者模式對(duì)數(shù)據(jù)進(jìn)行監(jiān)控可以減緩這個(gè)問題)。
否:
1.數(shù)據(jù)的更新不能時(shí)時(shí)體現(xiàn)在界面上(可以通過標(biāo)記的方式對(duì)已被修改的數(shù)據(jù)進(jìn)行標(biāo)記顯示)
2.會(huì)對(duì)用戶操作一定的不一致的感覺(例如刪除的數(shù)據(jù)還能夠看到(同樣可以通過標(biāo)記的方式解決))
類加鎖機(jī)制處理
begin--operation*n--end:
1.用戶進(jìn)入某一組操作的入口:
begin:獲取數(shù)據(jù),并進(jìn)行數(shù)據(jù)的初始化操作(例如排序等),初始化各種操作標(biāo)記集合(可以是int型集合,使用位運(yùn)算來表示每個(gè)位置的元素的處理狀態(tài)),同時(shí)將標(biāo)記設(shè)置為begin狀態(tài)。
2.用戶開始進(jìn)行N次各種操作:
operation:
get:從begin中初始化并處理好的數(shù)據(jù)中獲取指定的數(shù)據(jù)。
delete:檢查是否可被刪除,如果可以將操作標(biāo)記集合中對(duì)應(yīng)位置的標(biāo)記的對(duì)應(yīng)刪除的位設(shè)置為1。
lock:檢查是否可被加鎖,如果可以將操作標(biāo)記集合中對(duì)應(yīng)位置的標(biāo)記的對(duì)應(yīng)加鎖的位設(shè)置為1。
......
3.用戶退出該系列操作:
end:此時(shí)遍歷操作標(biāo)記集合,將其中為1的位的對(duì)應(yīng)元素進(jìn)行實(shí)際的相應(yīng)的操作,清空各種集合和狀態(tài),將標(biāo)記設(shè)置為end狀態(tài)。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。