资讯专栏INFORMATION COLUMN

备忘录模式(Memento)

Bamboy / 1174人阅读

摘要:备忘录模式一备忘录模式定义在不破坏封闭性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

备忘录模式

一. 备忘录模式 1.1 定义

在不破坏封闭性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态.

1.2 角色

备忘录(Memento):用于存储发起者对象的内部状态.

发起者(Orginator):创建备忘录,记录或恢复自身状态.

管理者(CareTaker):负责管理备忘录.

二. 具体实现 2.1 创建备忘录类
    public class Memento {
        private String state;
        public Memento(String state){
            this.state = state;
        }
        public String getState() {
            return state;
        }
    }
2.2 创建发起者类
    public class Originator {
        private String state;
        public void setState(String state) {
            System.out.println("state changed : " + state);
            this.state = state;
        }
        public Memento save(){
            return new Memento(state);
        }
    }
2.3 创建管理者类
    public class CareTaker {
        private Memento memento;
        public void save(Memento memento){
            System.out.println("Memento save ..." + memento.getState());
            this.memento = memento;
        }
        public Memento read(){
            System.out.println("Memento read ..." + memento.getState());
            return memento;
        }
    }
2.4 调用
    public static void main(String[] args) {
        Originator originator = new Originator();
        CareTaker careTaker = new CareTaker();
        originator.setState("1");
        careTaker.save(originator.save());
        originator.setState("2");
        careTaker.read();
    }
2.5 输出
    state changed : 1
    Memento save ...1
    state changed : 2
    Memento read ...1
三. 优缺点 3.1 优点

可以恢复到之前的状态.

3.2 缺点

耗费资源.

四. 源码
    https://github.com/Seasons20/DisignPattern.git

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69667.html

相关文章

  • 一起学设计模式 - 忘录模式

    摘要:备忘录模式常常与命令模式和迭代子模式一同使用。自述历史所谓自述历史模式实际上就是备忘录模式的一个变种。在备忘录模式中,发起人角色负责人角色和备忘录角色都是独立的角色。 备忘录模式(Memento Pattern)属于行为型模式的一种,在不破坏封装特性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。 概述 备忘录模式又叫做快照模式(...

    roland_reed 评论0 收藏0
  • 行为型模式

    摘要:但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。因为访问者模式使得算法操作增加变得容易。访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。 总体分为3大类:创建型模式 (5种):工厂方法、抽象工厂、单例、建造者、原型结构型模式(7种):适配器、装饰器、代理、外观、桥接、组合、享元行为型模式(11种...

    why_rookie 评论0 收藏0
  • PHP基础

    摘要:分别为适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。设计模式五适配器模式适配器模式将某个对象的接生成器和协程的实现在这篇文章中,作者针对那些比较难以理解的概念,以一个更为通俗的方式去讲明白。。 PHP 源码注解 PHP 的详细源码注解 PHP 字符串操作整理 一些有关字符串的常用操作。 Redis 常见七种使用场景 (PHP 实战) 这篇文章主要介绍利用 R...

    HtmlCssJs 评论0 收藏0
  • 好久不见,Java设计模式

    摘要:享元模式享元模式尽可能的让用户复用已经有的对象,从而避免造成反复创建对象的资源浪费。享元模式要求大部分的对象可以外部化。 showImg(https://segmentfault.com/img/bVbuYD9?w=1920&h=1200); 引子 设计模式是很多程序员总结出来的最佳实践。曾经在刚开始写项目的时候学习过设计模式,在开发过程中,也主动或者被动的使用过。现在写代码虽说不会特...

    alexnevsky 评论0 收藏0
  • Java学习 - 设计模式

    摘要:举例遇到多个构造器参数时考虑使用构建器,而不是重叠构造器模式或模式调用方法。静态工厂和构造器有个共同的局限性它们不能很好地扩展大量的可选参数构建器模式年月日客户端调用缺点构建器模式可能比重叠构造器更加冗长,参数多时使用较好。 设计模式 此文章部分来于网络,为了学习总结。 一、原型模式(Prototype) 介绍:从一个对象再创建另一个对象,而不需知道任何细节。 1、两种表现形式 (1)...

    MorePainMoreGain 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<