zoukankan      html  css  js  c++  java
  • 备忘录模式(java)

    备忘录模式:多次撤销

    改进课堂上的用户信息操作撤销实例,使得系统可以实现多次撤销(可以使用HashMapArrayList等集合数据结构实现)。java源代码:

    (1)Caretaker.java

    package shiyan20;
    
    import java.util.ArrayList;
    
    public class Caretaker {
    
     private ArrayList<Memento> mementos= new ArrayList<Memento>();
    
     public Memento getMemento(int i)
    
     {      
    
     return (Memento)mementos.get(i);    
    
     }
    
        
    
     public void setMemento(Memento memento)
    
     {   
    
     mementos.add(memento);
    
     }     
    
    }

    (2)Client.java

    package shiyan20;
    
    public class Client {
    
    public static void main(String a[]){
    
        UserInfoDTO user=new UserInfoDTO();
    
        Caretaker taker = new Caretaker();
    
        user.setAccount("zhangsan");
    
        user.setPassword("123456");
    
        user.setTelNo("13000000000");
    
        System.out.println("状态一:");
    
        taker.setMemento(user.saveMemento());
    
        user.show();
    
        System.out.println("---------------------------");
    
        user.setPassword("111111");
    
        user.setTelNo("13100001111");
    
        System.out.println("状态二:");    
    
        user.show();
    
        taker.setMemento(user.saveMemento());
    
        System.out.println("---------------------------");       
    
        user.setPassword("222222");
    
        user.setTelNo("13100001111");
    
        System.out.println("状态三:");    
    
        user.show();
    
        System.out.println("---------------------------");
    
        System.out.println("回到状态二");
    
        user.restoreMemento(taker.getMemento(1));
    
        user.show();
    
        System.out.println("---------------------------");
    
        System.out.println("回到状态一");
    
        user.restoreMemento(taker.getMemento(0));
    
        user.show();
    
        System.out.println("---------------------------");
    
        }
    
    }

    (3)Memento.java

    package shiyan20;
    
    public class Memento {
    
        private String account;
    
        private String password;
    
        private String telNo;
    
        public Memento(String account,String password,String telNo)
    
        {
    
            this.account=account;
    
            this.password=password;
    
            this.telNo=telNo;
    
        }
    
        public String getAccount()
    
        {
    
            return account;
    
        }
    
        public void setAccount(String account)
    
        {
    
            this.account=account;
    
        }
    
        public String getPassword()
    
        {
    
            return password;
    
        }     
    
        public void setPassword(String password)
    
        {
    
            this.password=password;
    
        }
    
        public String getTelNo()
    
        {
    
            return telNo;
    
        }   
    
        public void setTelNo(String telNo)
    
        {
    
            this.telNo=telNo;
    
        }
    
    }

    (4)UserInfoDTO.java

    package shiyan20;
    
    /*
    
     * 用户信息类
    
     */
    
    public class UserInfoDTO {
    
     
    
        private String account;
    
        private String password;
    
        private String telNo;
    
        
    
        public String getAccount()
    
        {
    
            return account;
    
        }
    
        
    
        public void setAccount(String account)
    
        {
    
            this.account=account;
    
        }
    
     
    
        public String getPassword()
    
        {
    
            return password;
    
        }
    
        
    
        public void setPassword(String password)
    
        {
    
            this.password=password;
    
        }
    
        
    
        public String getTelNo()
    
        {
    
            return telNo;
    
        }
    
        
    
        public void setTelNo(String telNo)
    
        {
    
            this.telNo=telNo;
    
        }
    
            
    
        public Memento saveMemento()
    
        {
    
            return new Memento(account,password,telNo);
    
        }
    
        public void restoreMemento(Memento memento)
    
        {
    
            this.account=memento.getAccount();
    
            this.password=memento.getPassword();
    
            this.telNo=memento.getTelNo();
    
        }
    
        
    
        public void show()
    
        {
    
            System.out.println("Account:" + this.account);
    
            System.out.println("Password:" + this.password);
    
            System.out.println("TelNo:" + this.telNo);        
    
        }
    
    }

    实现截图:

  • 相关阅读:
    纯文本人工智能的实现
    纯文本人工智能
    纯文本人工智能之句子如何分词
    纯文本人工智能之名词信息提取及存储
    跪求AI编程语言纯中文代码
    人工智能最重要的逻辑的实现
    启示录+!!建立智力库
    嫦娥共舞
    为什么有才华的人常失败
    长城登高望远
  • 原文地址:https://www.cnblogs.com/marr/p/15598604.html
Copyright © 2011-2022 走看看