备忘录模式是一种行为型设计模式,它允许在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。
备忘录模式通常包括三个角色:原发器(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对象中恢复状态。文章来源:https://www.toymoban.com/news/detail-415164.html
总结一下,在Java中实现备忘录模式非常简单,只需要定义原发器、备忘录和负责人三个类即可。在Android开发中,备忘录模式通常用于保存和恢复Activity的状态。Android提供了一个保存实例状态的机制,允许在Activity被销毁时保存其状态,并在Activity重新创建时恢复其状态。文章来源地址https://www.toymoban.com/news/detail-415164.html
到了这里,关于23种设计模式-备忘录模式(Android应用场景介绍)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!