LoginSignup
0
0

More than 3 years have passed since last update.

特定のクラスの状態を複製するクラスを用意してMementoとする。userは複製を作成したときにMementoをインスタンス化してコレクションに記録し、必要に応じてインスタンスを取り出す
Mementoは複製するメンバを保持する

Design Pattarm MENU

以下のクラス構成で確認します

クラス 説明
Origin.class 複製対象のクラス
Memento.class Originを複製する場合に、MementoにOriginのデータを複製し、Mementoを保存する
MementoList.class コレクション(ListやMapなど)を保持し、Mementoインスタンスを格納する
user(Main.class) 動作を確認する

*user 他の開発者がこのパターンを利用する、という意味合いを含みます

Origin.class
class Origin{
  int  No;

  void setNo(int No){
       this.No=No;
  }

  Memento createMemento(){
       return new Memento(No);
  }
}
Memento.class
class Memento{     
  int No;          // Originと同じfieldを持たせる

  Memento(int No){
      this.No=No;
  }

  int getNo(){
      return No;
  }
}
MementoList.class
class MementoList{
  Map  map = new HashMap();

  void put(int key,Memento mmt){
       map.put(key,mmt);
  }

  Memento getMemento(int key){
       return (Memento) map.get(key);
  }
}
user(Main.class)
public static void main(String[] args){
  Origin or = new Origin();
  MementoList list = new MementoList();

  or.setNo(1);
     list.put(1,or.createMemento());
  or.setNo(2);
     list.put(2,or.createMemento());

  Memento m1 = list.getMemento(1);
  System.out.println(m1.getNo());
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0