(13) 비망록 모드 - 코드 실현
소개하다.
개념: 봉인성을 파괴하지 않는 전제에서 한 대상의 내부 상태를 포획하고 그 대상 이외에 이 상태를 보존한다.이렇게 하면 나중에 객체를 원래 저장된 상태로 되돌릴 수 있습니다.
응용 장면: 어떤 대상의 특정한 시간 상태, 예를 들어 게임의 정지, 저장, 복구 기능을 저장해야 한다.만약 데이터베이스와 실체를 연결시켰다면 데이터베이스는 이 대상의 비망록이라고 할 수 있다.
다음 게임 압축 파일과 읽기 기능을 실현합니다
코드:
//게임류
package note.com.memento;
import java.math.BigDecimal;
import java.util.ArrayList;
public class DiningRoom {
private Integer waiter = 1;// 1
private String name = "default";//
private BigDecimal money = new BigDecimal(500);// 500
private ArrayList<String> foods = new ArrayList<String>();
public DiningRoom(){
foods.add(" ");
foods.add(" ");
foods.add(" ");
}
/*
*
*/
public DiningRoom(SaveGame game){
this.waiter = game.getWaiter();
this.name = game.getName();
this.money = game.getMoney();
this.foods = game.getFoods();
System.out.println(" ....");
draw();
}
/*
*
*/
public void start(){
System.out.println(" ......");
draw();
}
public void draw(){
System.out.println(" ......");
}
public void openDoor(){
System.out.println(" ");
}
public void closeDoor(){
System.out.println(" ");
}
/*
*
*/
public void back(SaveGame game){
this.waiter = game.getWaiter();
this.name = game.getName();
this.money = game.getMoney();
this.foods = game.getFoods();
System.out.println(" ...");
draw();
}
/*
*
*/
public SaveGame save(){
return new SaveGame(this);
}
public void show(){
System.out.println(" :"+this.name);
System.out.println(" :"+this.money.toString());
System.out.println(" :"+this.waiter+" ");
}
public Integer getWaiter() {
return waiter;
}
public void setWaiter(Integer waiter) {
this.waiter = waiter;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigDecimal getMoney() {
return money;
}
public void setMoney(BigDecimal money) {
this.money = money;
}
public ArrayList<String> getFoods() {
return foods;
}
public void setFoods(ArrayList<String> foods) {
this.foods = foods;
}
}
//아카이브 엔티티
package note.com.memento;
import java.math.BigDecimal;
import java.util.ArrayList;
/**
*
* @author lxz
*
*/
public class SaveGame {
private Integer waiter = 1;// 1
private String name = "default";//
private BigDecimal money = new BigDecimal(500);// 500
private ArrayList<String> foods = new ArrayList<String>();
public SaveGame(DiningRoom room){
this.waiter = room.getWaiter();
this.name = room.getName();
this.money = room.getMoney();
this.foods = room.getFoods();
}
public Integer getWaiter() {
return waiter;
}
public void setWaiter(Integer waiter) {
this.waiter = waiter;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigDecimal getMoney() {
return money;
}
public void setMoney(BigDecimal money) {
this.money = money;
}
public ArrayList<String> getFoods() {
return foods;
}
public void setFoods(ArrayList<String> foods) {
this.foods = foods;
}
}
//테스트 클래스
package note.com.memento;
import java.math.BigDecimal;
public class MementoTest {
public static void main(String[] args) {
DiningRoom game = new DiningRoom();
game.show();
game.start();
game.setMoney(new BigDecimal(2000));
game.setName(" ");
game.show();//
SaveGame save1 = game.save();
game.setName(" ");
game.show();//
game.back(save1);//
game.show();//
//===================
System.out.println("===== =======");
DiningRoom game2 = new DiningRoom(save1);//
game2.show();//
}
}
//결과
식당 이름:default 잔액:500종업원:1인 게임 시작...디스플레이 그리기...식당 이름: 서양인 잔액: 2000 종업원: 1인 식당 이름: 대양인 잔액: 2000 종업원: 1인 복구 파일...디스플레이 그리기...식당 이름: 서양인 잔액: 2000 종업원: 1인=======다시 시작 ============ 파일 읽기...디스플레이 그리기...식당 이름: 서양인 잔액: 2000 종업원: 1명
비망록 모델은 비교적 이해하기 쉽다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.