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