前言
用到這個模式無非就是想要做到撤銷剛保存已修改的基本數據信息的一個作用。關於這個功能不用狀態模式其實也可以做出來,但在這裏爲了練手上個項目剛學習的設計模式,於是我選擇用了狀態模式。
正文
備忘錄模式即是定義一個臨時存儲的地方,用來存儲對象的對象。在這裏使用就是你可以存在實體層裏也可以建一個數據庫表存着。
備忘錄模式主要內容如下:
Originator(發起人):負責創建一個備忘錄Memento,記錄當前時刻它的內部狀態,並可使用備忘錄使用備忘錄恢復內部狀態
發起人可決定備忘錄的內部狀態。
Memento(備忘錄):負責存儲發起人的內部狀態,防止除發起人之外的對象訪問備忘錄
Caretaker(管理者):負責保存好備忘錄,但不能進行操作
備忘錄管理層
//備忘錄管理者類:複製保存好備忘錄
public class BasicCaretaker
{
//定義備忘錄類型字段
//管理看到備忘錄的接口,將值傳出去
private BasicStateMemento memento;
public BasicStateMemento Memento
{
get { return memento; }
set { memento = value; }
}
}
發起人
//發起人,發起人可決定備忘錄的內部狀態
public class BasicDataEnitity
{
//字段
private string temporatyRate;
private string fixeduserFee;
private string unitTime;
private string leastTime;
private string preTime;
private string leastCash;
//private string head;
//private string setDate;
//private string setTime;
//屬性
public string TemporatyRate { get; set; }
public string FixeduserFee { get; set; }
public string UnitTime { get; set; }
public string LeastTime { get; set; }
public string PreTime { get; set; }
public string LeastCash { get; set; }
public string Head { get; set; }
public string SetDate { get; set; }
public string SetTime { get; set; }
//創建備忘錄,將當前需要保存的信息導入並實例化出一個Memento對象
public BasicStateMemento CreateMemento()
{
return (new BasicStateMemento(TemporatyRate, FixeduserFee, UnitTime, LeastCash, LeastTime, PreTime));
}
//恢復備忘錄
public void RecoverState(BasicStateMemento memento)
{
temporatyRate = memento.TemporatyRate;
fixeduserFee = memento.FixeduserFee;
unitTime = memento.UnitTime;
leastCash = memento.LeastCash;
leastTime = memento.LeastTime;
preTime = memento.PreTime;
}
}
備忘錄類
public class BasicStateMemento
{
//字段
private string temporatyRate;
private string fixeduserFee;
private string unitTime;
private string leastTime;
private string preTime;
private string leastCash;
//public BasicStateMemento()
//{
//}
//構造方法將相關數據導入
public BasicStateMemento(string TemporatyRate, string FixeduserFee, string UnitTime, string LeastTime, string PreTime, string LeastCash)
{
this.temporatyRate = TemporatyRate;
this.fixeduserFee = FixeduserFee;
this.unitTime = UnitTime;
this.leastTime = LeastTime;
this.preTime = PreTime;
this.leastCash = LeastCash;
}
//需要保存的數據屬性,接收值不能修改
public string TemporatyRate
{
get { return temporatyRate; }
}
public string FixeduserFee
{
get { return fixeduserFee; }
}
public string UnitTime
{
get { return unitTime; }
}
public string LeastTime
{
get { return leastTime; }
}
public string PreTime
{
get { return preTime; }
}
public string LeastCash
{
get { return leastCash; }
}
}
總結
先模仿,再總結,再創造