需求:
對某一組在持續(xù)變化的數(shù)據(jù)進(jìn)行一系列的組操作(show否副,delete票灰,add......)
類似于加鎖機(jī)制
問題:
在這一組操作過程中蛤袒,數(shù)據(jù)本身也是在不停變化的(行車記錄儀的視頻是時(shí)時(shí)在錄的),那么我們在操作過程中
是否要對這個(gè)過程中的數(shù)據(jù)的改變做出反應(yīng)呢晶丘?
是:
1.用戶本身可能只是想操作在這一組操作開始時(shí)的那些數(shù)據(jù),而不是時(shí)時(shí)的數(shù)據(jù)集合。
2.如果每次操作都要更新數(shù)據(jù)靶剑,對于性能來說是個(gè)考驗(yàn)(參考內(nèi)容觀察者模式對數(shù)據(jù)進(jìn)行監(jiān)控可以減緩這個(gè)問題)。
否:
1.數(shù)據(jù)的更新不能時(shí)時(shí)體現(xiàn)在界面上(可以通過標(biāo)記的方式對已被修改的數(shù)據(jù)進(jìn)行標(biāo)記顯示)
2.會對用戶操作一定的不一致的感覺(例如刪除的數(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)記集合中對應(yīng)位置的標(biāo)記的對應(yīng)刪除的位設(shè)置為1厘灼。
lock:檢查是否可被加鎖,如果可以將操作標(biāo)記集合中對應(yīng)位置的標(biāo)記的對應(yīng)加鎖的位設(shè)置為1咽瓷。
......
3.用戶退出該系列操作:
end:此時(shí)遍歷操作標(biāo)記集合设凹,將其中為1的位的對應(yīng)元素進(jìn)行實(shí)際的相應(yīng)的操作,清空各種集合和狀態(tài)茅姜,將標(biāo)記設(shè)置為end狀態(tài)闪朱。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者