• 设计模式开始--备忘录模式


    备忘录模式

    一、作用:

    在不破坏原有封装性(属性什么的,不要暴漏给客户端)的前提下,捕获一个对象的内容状态,并保持这个对象的状态,同样可以将对象恢复到之前的状态

     二、类图:

    三、实现

     (1)Role类,角色类,可以保存状态,恢复状态

    public class Role {
        private String status;
        public String getStatus() {
            return status;
        }
        public void setStatus(String status) {
            this.status = status;
        }
        public Memory saveMemory()
        {
            return new Memory(status);
        }
        public void recoveryMemory(Memory memory)
        {
            this.status = memory.getStatus();
        }
    }
    View Code

    (2)Memory类,实际状态保持的类,用于封装,隐藏细节

    public class Memory {
        private String status;
        public String getStatus() {
            return status;
        }
        public void setStatus(String status) {
            this.status = status;
        }
        public Memory(String status)
        {
            this.status = status;
        }
    }
    View Code

    (3)MemoryCare类,用于set和get保存的状态

    public class MemoryCare {
        private Memory memory;
        public Memory getMemory() {
            return memory;
        }
        public void setMemory(Memory memory) {
            this.memory = memory;
        }
    }
    View Code

    (4)Client,客户类

    public class Client {
        public static void main(String[] args) {
            MemoryCare mc = new MemoryCare();
            Role role = new Role();
            role.setStatus("fighting");
            System.out.println(role.getStatus());
            mc.setMemory(role.saveMemory());
            role.setStatus("game over");
            System.out.println(role.getStatus());
            role.recoveryMemory(mc.getMemory());
            System.out.println(role.getStatus());
        }
    }
    View Code

    Bonus:适配器模式:再增加一个类,使用适配器模式,将不适用与现在接口的方法改写成可以适用的方法

  • 相关阅读:
    Solution 「UVA 1104」Chips Challenge
    Solution 「WF2011」「BZOJ #3963」MachineWorks
    Solution 「洛谷 P4198」楼房重建
    Solution 「HDU 6643」Ridiculous Netizens
    Solution 「多校联训」排水系统
    [非专业翻译] Mapster 配置位置
    [非专业翻译] Mapster 使用特性标签配置映射
    [非专业翻译] Mapster 自定义命名约定
    [非专业翻译] Mapster 配置实例
    [非专业翻译] Mapster 自定义映射
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4383947.html
Copyright © 2020-2023  润新知