(13) 비망록 모드 - 코드 실현

14498 단어

소개하다.


개념: 봉인성을 파괴하지 않는 전제에서 한 대상의 내부 상태를 포획하고 그 대상 이외에 이 상태를 보존한다.이렇게 하면 나중에 객체를 원래 저장된 상태로 되돌릴 수 있습니다.
응용 장면: 어떤 대상의 특정한 시간 상태, 예를 들어 게임의 정지, 저장, 복구 기능을 저장해야 한다.만약 데이터베이스와 실체를 연결시켰다면 데이터베이스는 이 대상의 비망록이라고 할 수 있다.
 
다음 게임 압축 파일과 읽기 기능을 실현합니다
 

코드:


//게임류
 
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명
 
비망록 모델은 비교적 이해하기 쉽다.

좋은 웹페이지 즐겨찾기