メモモード
定義メモ(メメント)モード:
カプセル化、捕捉、およびオブジェクトの内部状態を、違反と、外部オブジェクトの状態を保存せずに
オブジェクトが保存元を復元できるようにする必要がある場合、後でよう状態。このモードでは、スナップショットモードと呼ばれています。
オリジネータ(発信)役割:
現在の時間の録音内部状態情報、メモやメモデータの回復を作成し、しています
、他のビジネス機能を達成するためには、それはメモのすべての情報にアクセスすることができます。
覚書(メメント)の役割:
内部状態が後援するために必要なときに、これらの内部状態のプロモーターを格納するための責任があります。
マネージャ(世話人)の役割:
、メモを管理保存を提供し、メモ機能にアクセスし、それはメモの内容を変更してアクセスすることができないため。
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 }