23种设计模式-备忘录模式(Android应用场景介绍)

这篇具有很好参考价值的文章主要介绍了23种设计模式-备忘录模式(Android应用场景介绍)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

备忘录模式是一种行为型设计模式,它允许在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。

备忘录模式通常包括三个角色:原发器(Originator)、备忘录(Memento)和负责人(Caretaker)。原发器是需要被保存状态的对象,备忘录保存了原发器的状态,而负责人负责保存和恢复备忘录。

在Java中实现备忘录模式非常简单,我们可以先定义原发器和备忘录类:

public class Originator {
    private String state;

    public void setState(String state) {
        this.state = state;
    }

    public Memento saveStateToMemento() {
        return new Memento(state);
    }

    public void getStateFromMemento(Memento memento) {
        state = memento.getState();
    }
}

public class Memento {
    private String state;

    public Memento(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }
}

然后我们可以定义一个负责人类来管理备忘录:

public class Caretaker {
    private List<Memento> mementos = new ArrayList<>();

    public void addMemento(Memento memento) {
        mementos.add(memento);
    }

    public Memento getMemento(int index) {
        return mementos.get(index);
    }
}

在这个例子中,我们可以通过调用Originator的setState方法来改变其状态,通过saveStateToMemento方法保存状态,通过getStateFromMemento方法恢复状态。Caretaker可以通过addMemento方法添加备忘录,通过getMemento方法获取备忘录。

现在我们可以编写一个简单的Demo来测试备忘录模式:

public class MementoPatternDemo {
    public static void main(String[] args) {
        Originator originator = new Originator();
        Caretaker caretaker = new Caretaker();

        originator.setState("State #1");
        originator.setState("State #2");
        caretaker.addMemento(originator.saveStateToMemento());
        originator.setState("State #3");
        caretaker.addMemento(originator.saveStateToMemento());
        originator.setState("State #4");

        System.out.println("Current State: " + originator.getState());
        originator.getStateFromMemento(caretaker.getMemento(0));
        System.out.println("First saved State: " + originator.getState());
        originator.getStateFromMemento(caretaker.getMemento(1));
        System.out.println("Second saved State: " + originator.getState());
    }
}

输出结果为:

Current State: State #4
First saved State: State #2
Second saved State: State #3

现在让我们看看在Android开发中如何使用备忘录模式。

在Android中,备忘录模式通常用于保存和恢复Activity的状态。Activity是一个非常重要的组件,它通常包含用户输入、UI状态和其他重要数据。当Activity被系统销毁并重新创建时,它的状态会丢失,这会对用户体验产生负面影响。为了解决这个问题,Android提供了一种保存Activity状态的机制——保存实例状态(SaveInstanceState)。

保存实例状态允许在Activity被销毁时保存其状态,以便在Activity重新创建时恢复状态。它基于备忘录模式实现,系统会自动为Activity创建一个Bundle对象,并在Activity被销毁时将该Bundle对象保存起来。当Activity重新创建时,系统会将保存的Bundle对象传递给Activity,并允许Activity从中恢复其状态。

下面是一个简单的例子,演示了如何使用保存实例状态保存和恢复Activity的状态:

public class MainActivity extends AppCompatActivity {
    private static final String KEY_TEXT = "text_key";
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.edit_text);

        if (savedInstanceState != null) {
            String text = savedInstanceState.getString(KEY_TEXT);
            editText.setText(text);
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        String text = editText.getText().toString();
        outState.putString(KEY_TEXT, text);
    }
}

在这个例子中,我们使用了onSaveInstanceState方法保存Activity的状态,使用了onCreate方法恢复Activity的状态。当Activity被销毁时,系统会调用onSaveInstanceState方法,并将Bundle对象作为参数传递给该方法。我们可以在该方法中将需要保存的状态存储到Bundle对象中。当Activity重新创建时,系统会调用onCreate方法,并将保存的Bundle对象作为参数传递给该方法。我们可以在该方法中从Bundle对象中恢复状态。

总结一下,在Java中实现备忘录模式非常简单,只需要定义原发器、备忘录和负责人三个类即可。在Android开发中,备忘录模式通常用于保存和恢复Activity的状态。Android提供了一个保存实例状态的机制,允许在Activity被销毁时保存其状态,并在Activity重新创建时恢复其状态。文章来源地址https://www.toymoban.com/news/detail-415164.html

到了这里,关于23种设计模式-备忘录模式(Android应用场景介绍)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【设计模式】备忘录模式

    主页传送门: 💁 传送        备忘录(Memento Pattern)模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。。其定义如下: Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later.        即:在不破坏封

    2024年02月07日
    浏览(57)
  • 设计模式-备忘录模式

    备忘录模式(Memento Pattern)是计算机科学中的一种行为设计模式。它提供了一种在不破坏封装性的前提下,捕获和恢复对象内部状态的方法。这种模式主要用于在用户需要回滚到对象的某个先前状态时,能够实现状态的还原。 在备忘录模式中,主要涉及到三个角色: Origina

    2024年01月23日
    浏览(49)
  • Java设计模式-备忘录模式

    一、概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo)操作,如 Word、记事本、Photoshop、IDEA等软件在编辑时按 Ctrl+Z

    2024年01月21日
    浏览(51)
  • 【前端设计模式】之备忘录模式

    设计模式是在软件开发中经过验证的解决问题的方法。它们是从经验中总结出来的,可以帮助我们更好地组织和管理代码,提高代码的可维护性、可扩展性和可重用性。无论是前端还是后端开发,设计模式都扮演着重要的角色。在本专栏中,我们将探索一些常见的前端设计模

    2024年02月05日
    浏览(43)
  • 设计模式行为型——备忘录模式

    目录 备忘录模式的定义 备忘录模式的实现 备忘录模式角色 备忘录模式类图 备忘录模式举例 备忘录模式代码实现 备忘录模式的特点 优点 缺点 使用场景 注意事项 实际应用         备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式(Token Pattern),属

    2024年02月14日
    浏览(58)
  • 设计模式(十八)备忘录

    在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复到原先保存的状态。备忘录模式是一种对象行为型模式,其别名为标记(Token)模式。 备忘录模式的核心在于备忘录类以及用于管理备忘录的负责人类的设计,包

    2024年02月04日
    浏览(44)
  • 《设计模式的艺术》笔记 - 备忘录模式

            备忘录模式在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为模式,别名为Token。 myclass.h myclass.cpp main.cpp         1. 它提供了一种状态恢复的实现机制,使得用户可

    2024年01月24日
    浏览(63)
  • C++ 设计模式之备忘录模式

    【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C++编码部分】         -- 什么是备忘录模式  (第17种模式)          备忘录模式 (Memento Pattern)是⼀种 ⾏为型设计模式 ,它允许在不暴露对象实现的情况下捕获对

    2024年01月20日
    浏览(50)
  • 03-JAVA设计模式-备忘录模式

    Java中的备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后可以将对象恢复到原先保存的状态。 主要角色包括: 发起者(Originator):需要保存和恢复状态的对象。它记录当前

    2024年04月26日
    浏览(43)
  • 设计模式——备忘录模式(Memento Pattern)

    类型: 行为型模式 目的: 保存一个对象的某个状态,以便在适当的时候恢复对象。 使用场景: 1、需要保存/恢复数据的相关状态场景。 2、提供一个可回滚的操作。 2.1.1 定义副本类 2.1.2 定义对象 菜鸟的例子定义Originator 对象的同时,还提供saveStateToMemento、getStateFromMemento的

    2024年02月06日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包