[Deisgn Pattern] 樣板方法(Template Method)
程式開發上常常都會使用到繼承,但既然要用到繼承,我們就要想辦法讓所有可能重覆固定的部份儘量抽到父類別去,讓子類去實作不同的地方即可;或是我們可以讓父類別去定義執行的步驟,但由子類別去決定執行的內容。舉例來說:寄信的方法都一樣,但是內容會不同。
所以先建立一個寄信處理的父類別:
public abstract class MailSender
{
private string _receiver;
private string _title;
protected string _body;
public MailSender(string title, string receiver)
{
_title = title;
_receiver = receiver;
}
public abstract void MakeMailBody();
public bool Send()
{
this.MakeMailBody();
bool isSend = false;
//...寄信處理
return isSend;
}
}
繼承的子類別:只需要實作信件內容即可。
public class NotifyMailSender : MailSender
{
public NotifyMailSender(string title, string receiver):base(title, receiver)
{
}
public override void MakeMailBody()
{
this._body = "這是一封通知信";
}
}
public class ErrorMailSender : MailSender
{
public ErrorMailSender(string title, string receiver):base(title, receiver)
{
}
public override void MakeMailBody()
{
this._body = "這是一封警告信";
}
}
這樣子不管你想要寄什麼信~都可以直接切換:
MailSender sender = new NotifyMailSender("notify", "admin@admin.com");
sender.Send();
sender = new ErrorMailSender("error", "admin@admin.com");
sender.Send();
Dotblogs 的標籤: Design Pattern,C#