デザインパターンメモモード

メモモード

定義メモ(メメント)モード:
カプセル化、捕捉、およびオブジェクトの内部状態を、違反と、外部オブジェクトの状態を保存せずに
オブジェクトが保存元を復元できるようにする必要がある場合、後でよう状態。このモードでは、スナップショットモードと呼ばれています。

オリジネータ(発信)役割:
現在の時間の録音内部状態情報、メモやメモデータの回復を作成し、しています
    、他のビジネス機能を達成するためには、それはメモのすべての情報にアクセスすることができます。

覚書(メメント)の役割:
内部状態が後援するために必要なときに、これらの内部状態のプロモーターを格納するための責任があります。
マネージャ(世話人)の役割:
、メモを管理保存を提供し、メモ機能にアクセスし、それはメモの内容を変更してアクセスすることができないため。
  1つの インポートjava.util.ArrayListのの;
   2  
  。3  パブリック クラスメメント{
   4      プライベート 静的暫定暫定= 新しい新しい世話人();
   5      // 現在のバックアップ場所
  。6      プライベート 静的 int型 COUNT = -1 ;
   7  
  。8      パブリック 静的 ボイドメイン(文字列[]引数){
   9。          チェスA = 新たな新しいチェス( "6月" ,. 1 ,. 1 );
 10          プレイ(A、 "車"、6、3 );
 11          再生(A、 "MA"、3、6 );
 12         遊ぶ( "象"、7、9 );
13          遊び( "卒"、2、4 )。
14          アンドゥ(A)。
15          アンドゥ(A)。
16          リドゥ(A)。
17  
18      }
 19  
20      // 下棋、同时保存
21      公共 静的 ボイドプレイ(チェスA、文字列名、int型のx、int型のY){
 22          a.setName(名);
23          a.setX(X)。
24          a.setY(Y)。
25          caretaker.save(a.save())。
26          数++ ;
27         a.show();
 28      }
 29  
30      // 破壊チェス
れる31      パブリック 静的 ボイドは、アンドゥ(チェスA){使用
 32          a.recover(caretaker.getMemento( - COUNT));
 33である         a.show();
 34である     }
 35  
36      // キャンセル破棄
37 [      パブリック 静的 無効REDOを(チェスA){
 38が          a.recover(caretaker.getMemento(++ COUNT));
 39          a.show();
 40      }
 41れる }
 42である 
43である // 現在のステータス、イニシエータ
44 クラスチェス{
 45      プライベート文字列名;
46      プライベート int型のX;
47      プライベート int型のy;
48  
49      公共の文字列のgetName(){
 50          リターン名。
51      }
 52  
53      公共の ボイドのsetName(文字列名){
 54          この .nameの= 名前。
55      }
 56  
57      公衆 INT のgetX(){
 58          リターンX。
59      }
 60  
61      公衆 ボイド SETX(int型X){
 62          この .X = X。
63      }
 64  
65      公衆 INT のgetY(){
 66          リターンY。
67      }
 68  
69      公共 ボイド SETYの(int型のY){
 70          この .Y = Y。
71      }
 72  
73      公共チェス(文字列名、int型のx、int型のY){
 74          この .nameの= 名前。
75          この .X =バツ;
76          この .Y = Y。
77      }
 78  
79      // 保存
80      公的保存ChessMemento(){
 81          リターン 新しいChessMemento(名前、X、Y)
82      }
 83  
84      // 恢复
85      公共 ボイド回復(ChessMemento CH){
 86          名= ch.getName()。
87          X = ch.getX()。
88          、Y = ch.getY()。
89      }
 90  
91      公共 のボイドショー(){
 92          のSystem.out.println(名+ "---" + X + "---" + Y)。
93      }
 94  }
 95  
96  // 备忘录
97  クラスChessMemento {
 98      プライベート文字列名。
99      プライベート int型のX;
100      プライベート int型のy;
101  
102      パブリック文字列のgetName(){
 103          戻り名。
104      }
 105  
106      公共 INT のgetX(){
 107          戻りX。
108     }
 109  
110      公共 INT のgetY(){
 111          戻りY。
112      }
 113  
114      公共 ChessMemento(文字列名、int型のx、int型のY){
 115          この .nameの= 名前。
116          この .X =のX。
117          この .Y = Y。
118      }
 119  }
 120  
121  // 备份管理者
122  クラス暫定{
 123      民間のArrayList <ChessMemento> ARR = 新しいですArrayListのは、<> ();
 124  
125      // メモプレゼント
126      公衆 ChessMemento getMemento(INT I){
 127          戻り、arr.get(I)を
 128      }
 129  
130      //がメモ保存
131が     公共 ボイド保存(ChessMemento CH){
 132          ARRを。追加(CH);
 133      }
 134 }

 

 

おすすめ

転載: www.cnblogs.com/loveer/p/11279625.html