備忘錄模式

2022-01-26 13:46:58 字數 1943 閱讀 5066

namespace

multiplemementopattern

public

string mobilenum

}//發起人

public

class

mobileowner

public mobileowner(listpersons)

//建立備忘錄,將當期要儲存的聯絡人列表匯入到備忘錄中

public

contactmemento creatememento()

//將備忘錄中的資料備份匯入到聯絡人列表中

public

void

restorememento(contactmemento memento)

}public

void

show()

個人,他們是:

", contactpersons.count);

foreach (contactperson p in

contactpersons)

號碼為:

", p.name, p.mobilenum);}}

}//備忘錄

public

class

contactmemento

public contactmemento(listpersons)

}//管理角色

public

class

caretaker

public

caretaker()

}class

program

,new contactperson() ,

new contactperson()

};mobileowner mobileowner = new

mobileowner(persons);

mobileowner.show();

//建立備忘錄並儲存備忘錄物件

caretaker caretaker = new

caretaker();

caretaker.contactmementodic.add(datetime.now.tostring(), mobileowner.creatememento());

//更改發起人聯絡人列表

console.writeline("

----移除最後乙個聯絡人--------");

mobileowner.contactpersons.removeat(2);

mobileowner.show();

//建立第二個備份

thread.sleep(1000

); caretaker.contactmementodic.add(datetime.now.tostring(), mobileowner.creatememento());

//恢復到原始狀態

console.writeline("

-------恢復聯絡人列表,請從以下列表選擇恢復的日期------");

var keycollection =caretaker.contactmementodic.keys;

foreach (string k in

keycollection)

", k);

}while (true

)

catch

contactmemento contactmentor = null

;

if (index < keycollection.count && caretaker.contactmementodic.trygetvalue(keycollection.elementat(index), out

contactmentor))

else

} }}

}

備忘錄模式

備忘錄模式 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可以使用備忘錄恢復內部狀態。originator可根據需要...

備忘錄模式

先從物件導向的三大特徵之一封裝說起。物件導向的封裝簡單點說就是把狀態 資料 和行為 操作這些資料的方法 放到一起,構成乙個單元,通常叫做類。乙個物件的行為是事先確定好的 靜態 一些指令碼,如果物件的狀態相同,物件看起來就是一樣的。所以當我們需要把乙個物件的某一時刻儲存起來,那麼只需要儲存它在那個時刻...

備忘錄模式

面臨問題 物件狀態的變化無端,如何回溯恢復物件在某個點的狀態?在軟體構建過程中,某些物件的狀態在轉換過程中,可能由於某種需要,要求程式能夠回溯到物件之前處於某個點時的狀態。如果使用一些公用介面來讓其他物件得到物件的狀態,便會暴露物件的細節實現。如何實現物件狀態的良好儲存與恢復?但同時又不會因此而破壞...