設計模式之備忘錄模式

2021-06-17 01:09:53 字數 2065 閱讀 2799

***機器:

public class ***machine 

public void startplay()

***disc.setluminance(60);

***disc.settime(0);

***disc.setvolume(80);

} public void stopplay()

***disc.setluminance(70);

***disc.settime(80);

***disc.setvolume(60);

}}

***isc:

public class ***disc

public int getvolume()

public void setvolume(int volume)

public int getluminance()

public void setluminance(int luminance)

public void settime(int time)

}

main:

public class main 

}

**無錯未必優,這樣的備份過程暴露了細節,使客戶端的職責過多,我們希望把儲存的細節給封裝起來,這個時候就要用到備忘錄模式.

在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態.這樣以後就可以將該物件恢復到原先的狀態.

按照備忘錄模式設計後

**部分:

***disc.class

public class ***disc

public int getvolume()

public void setvolume(int volume)

public int getluminance()

public void setluminance(int luminance)

public void settime(int time)

}

***machine.class

public class ***machine 

public void startplay()

***disc.setluminance(60);

***disc.settime(0);

***disc.setvolume(80);

} public void stopplay()

***disc.setluminance(70);

***disc.settime(80);

***disc.setvolume(60);

}}

***statemanager.class

public class ***statemanager 

public void set***state(***state ***state)

}

***state.class

public class ***state 

public int gettime()

public int getvolume()

public void setvolume(int volume)

public int getluminance()

public void setluminance(int luminance)

public void settime(int time)

}

main.class

public class main 

}}

設計模式之備忘錄模式

定義 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。備忘錄模式有三個角色 以儲存遊戲進度為例,退出遊戲前存檔,再進入遊戲就會顯示退出之前的狀態。示例 遊戲發起人類 public class game public state cr...

設計模式之 備忘錄模式

定義 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣就可以將該物件 恢復到原先儲存的狀態。很好理解,就像我們以前打通關遊戲一樣,打通某個關卡,就會備份一下,不然根本通不了關。備忘錄 負責儲存發起人物件的內部狀態,在需要的時候提供發起人需要的內部狀態。public c...

設計模式之備忘錄模式

在日常生活中,總會出現這樣的情況,有時候做錯了一件事,然後特別希望能夠回到發生這件事情之前。當然,這在日常生活中是不可能,不過,在軟體開發過程卻是可以實現的,比如說我們經常使用的ctrl z,或者一些其他軟體的回退功能等等,這其中就涉及到了備忘錄模式 memonto 所謂的備忘錄模式,其實就是把當前...