【正文】
nto ()Set Mem ento (Ches sm anMe m ento m em ento )...: Ches sm anMe m ento: vo idChess m anMe m entoiii Prop ertyI m plem enta tion Prop ertyI m plem enta tion Prop ertyI m plem enta tion Prop erty Prop erty Prop erty labe lxyLabelXY: strin g: int: int: strin g: int: intiiiiiii Set ter Gette r Set ter Gette r Set ter Gette r Chess m anMe m ento (strin g la bel, int x , int y)set_Level (string value)get_ Lev el ()set_ X (int valu e)get_ X ()set_ Y (in t va lue)get_ Y ()...: vo id: strin g: vo id: int: vo id: int 備忘錄模式的應(yīng)用實(shí)例 ?實(shí)例代碼 ? (1) Chessman:象棋棋子類,充當(dāng)原發(fā)器 ? (2) ChessmanMemento:象棋棋子備忘錄類,充當(dāng)備忘錄 ? (3) MementoCaretaker:象棋棋子備忘錄管理類,充當(dāng)負(fù)責(zé)人 ? (4) Program:客戶端測試類 演示 …… 參考代碼 (DesignPattern\MementoSample) 備忘錄模式的應(yīng)用實(shí)例 ?結(jié)果及分析 ?通過創(chuàng)建備忘錄對象可以 將象棋棋子的歷史狀態(tài)信息記錄下來 ,在 “悔棋” 時(shí)取出存儲在備忘錄中的歷史狀態(tài)信息, 用歷史狀態(tài)來覆蓋當(dāng)前狀態(tài) ,從而實(shí)現(xiàn)狀態(tài)的撤銷 實(shí)現(xiàn)多次撤銷 ?動機(jī) ?有時(shí)候用戶需要 撤銷多步操作 ?實(shí)現(xiàn)方案: 在負(fù)責(zé)人類中 定義一個(gè)集合 來存儲多個(gè)備忘錄,每個(gè)備忘錄負(fù)責(zé)保存一個(gè)歷史狀態(tài), 在撤銷時(shí)可以對備忘錄集合進(jìn)行逆向遍歷,回到一個(gè)指定的歷史狀態(tài) ,還可以 對備忘錄集合進(jìn)行正向遍歷,實(shí)現(xiàn)重做 (Redo)或恢復(fù)操作 ,即取消撤銷,讓對象狀態(tài)得到恢復(fù) 實(shí)現(xiàn)多次撤銷 ?結(jié)構(gòu) 1 . . 10 . . *Chess m an+++ Prop ertyI m plem enta tion Prop ertyI m plem enta tion Prop ertyI m plem enta tion Prop erty Prop erty Prop erty labe lxyLabelXY: strin g: int: int: strin g: int: int+++++++ii Set ter Gette r Set ter Gette r Set ter Gette r Chess m an ( string lab el, in t x , int y)set_Level (string value)get_ Lev el (