/*
*
* User: Administrator
* Date: 2007-7-2
* Time: 9:02
*/
using System;
using System.Collections.Generic;
namespace myMemonto
{
public interface IMemonto{}
public class State
{
public State(){}
public string stateName; // 状态名
public int Level; // 状态级别
}
// 发起者
public class Originator
{
private class Memonto:IMemonto
{
private State _state;
public Memonto(State st)
{
_state = new State();
_state.stateName = st.stateName;
_state.Level = st.Level;
}
public State state
{
get {
return _state;
}
set {
_state = value;
}
}
}
private State state;
public Originator()
{
state = new State();
state.stateName = " begin " ;
state.Level = 1 ;
}
public string StateName
{
get { return state.stateName;}
set {state.stateName = value;}
}
public int Level
{
get
{
return state.Level;
}
set
{
state.Level = value;
}
}
public IMemonto CreateMomento() {
return new Memonto( this .state);
}
public void SetState(IMemonto m)
{
Memonto mm = (Memonto)m;
this .state = mm.state;
}
}
public class Caretaker:System.Collections.CollectionBase
{
public Caretaker(){}
public int Add(IMemonto st)
{
return List.Add(st);
}
public IMemonto this [ int index]{
get {
return (IMemonto)List[index];
}
set {
List[index] = value;
}
}
public void Remove(IMemonto st){
List.Remove(st);
}
public IMemonto Restore()
{
if (List.Count == 0 ) return null ;
IMemonto st = (IMemonto) List[List.Count - 1 ];
List.Remove(st);
return st;
}
}
class MainClass
{
public static void Main( string [] args)
{
// Console.WriteLine("Hello World!");
Originator o = new Originator();
Caretaker c = new Caretaker();
c.Add(o.CreateMomento());
o.StateName = " one " ;
o.Level = 100 ;
c.Add(o.CreateMomento());
o.StateName = " two " ;
o.Level = 200 ;
c.Add(o.CreateMomento());
IMemonto m = c.Restore();
while (m != null ){
o.SetState(m);
System.Console.WriteLine(o.StateName);
m = c.Restore();
}
System.Console.ReadLine();
}
}
}
*
* User: Administrator
* Date: 2007-7-2
* Time: 9:02
*/
using System;
using System.Collections.Generic;
namespace myMemonto
{
public interface IMemonto{}
public class State
{
public State(){}
public string stateName; // 状态名
public int Level; // 状态级别
}
// 发起者
public class Originator
{
private class Memonto:IMemonto
{
private State _state;
public Memonto(State st)
{
_state = new State();
_state.stateName = st.stateName;
_state.Level = st.Level;
}
public State state
{
get {
return _state;
}
set {
_state = value;
}
}
}
private State state;
public Originator()
{
state = new State();
state.stateName = " begin " ;
state.Level = 1 ;
}
public string StateName
{
get { return state.stateName;}
set {state.stateName = value;}
}
public int Level
{
get
{
return state.Level;
}
set
{
state.Level = value;
}
}
public IMemonto CreateMomento() {
return new Memonto( this .state);
}
public void SetState(IMemonto m)
{
Memonto mm = (Memonto)m;
this .state = mm.state;
}
}
public class Caretaker:System.Collections.CollectionBase
{
public Caretaker(){}
public int Add(IMemonto st)
{
return List.Add(st);
}
public IMemonto this [ int index]{
get {
return (IMemonto)List[index];
}
set {
List[index] = value;
}
}
public void Remove(IMemonto st){
List.Remove(st);
}
public IMemonto Restore()
{
if (List.Count == 0 ) return null ;
IMemonto st = (IMemonto) List[List.Count - 1 ];
List.Remove(st);
return st;
}
}
class MainClass
{
public static void Main( string [] args)
{
// Console.WriteLine("Hello World!");
Originator o = new Originator();
Caretaker c = new Caretaker();
c.Add(o.CreateMomento());
o.StateName = " one " ;
o.Level = 100 ;
c.Add(o.CreateMomento());
o.StateName = " two " ;
o.Level = 200 ;
c.Add(o.CreateMomento());
IMemonto m = c.Restore();
while (m != null ){
o.SetState(m);
System.Console.WriteLine(o.StateName);
m = c.Restore();
}
System.Console.ReadLine();
}
}
}