Corak Kenangan ialah corak reka bentuk tingkah laku yang membolehkan keadaan dalaman objek ditangkap dan disimpan tanpa memusnahkan enkapsulasi, dan boleh dipulihkan kemudiannya pattern ialah kelas Memento, yang menyimpan keadaan dalaman objek
Di Java, corak Memento boleh dilaksanakan dengan mentakrifkan kelas Memento biasanya Mengandungi satu atau lebih medan peribadi untuk menyimpan keadaan dalaman daripada objek yang akan disimpan Kelas Memo juga boleh menyediakan kaedah awam untuk mendapatkan dan menetapkan medan ini Objek asal boleh menggunakan kelas Memo untuk mencipta memo dan menyimpannya ke dalam sejarah apabila keadaan objek dipulihkan, objek asal boleh mendapatkan memo daripada rekod sejarah dan menggunakan memo untuk memulihkan keadaannya
Dalam mod memo, tiga peranan berikut biasanya terlibat:
@Data public class Memento { /** * 攻击力 */ private int attack; /** * 防御力 */ private int defense; /** * 生命值 */ private int hp; public Memento(int attack, int defense, int hp) { this.attack = attack; this.defense = defense; this.hp = hp; } }
@Data public class Role { /** * 攻击力 */ private int attack; /** * 防御力 */ private int defense; /** * 生命值 */ private int hp; public Role(int attack, int defense, int hp) { this.attack = attack; this.defense = defense; this.hp = hp; } /** * 将当前对象储存值Memento中 * @return */ public Memento save(){ return new Memento(attack,defense,hp); } /** * 从memento中获取状态;并恢复到当前状态 * @param memento */ public void restore(Memento memento){ attack = memento.getAttack(); defense = memento.getDefense(); hp = memento.getHp(); } }
public class Caretaker { private List<Memento> mementos = new ArrayList<>(); public void addMemento(Memento m){ mementos.add(m); } public Memento getMemento(int index){ return mementos.get(index); } }
public class Demo { public static void main(String[] args) { Role role = new Role(100,50,20); Caretaker caretaker = new Caretaker(); Memento memento = role.save(); caretaker.addMemento(memento); // 攻击力+10 role.setAttack(role.getAttack()+10); System.out.println(JSON.toJSONString(role)); // 恢复 role.restore(caretaker.getMemento(0)); System.out.println(JSON.toJSONString(role)); } }
Ia boleh menyimpan dan memulihkan keadaan objek, menjadikan perubahan dalam keadaan objek lebih fleksibel dan boleh dikawal.
Modnya mudah untuk dilaksanakan, Mudah difahami dan digunakan. Objek memo dan objek asal diasingkan, memastikan pengkapsulan sistem.Atas ialah kandungan terperinci Bagaimana untuk menggunakan corak memo Java untuk menyimpan dan memulihkan keadaan objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!