SqlMessage — 具體實作
public class SqlMessage : AbstractMessageTemplate
{
public SqlMessage(string userId) : base(userId) { }
public override List Get()
{
return new List { new MessageModel("SQL方式獲取Message", DateTime.Now) };
}
}
XMLMessage — 具體實作
public class XMLMessage : AbstractMessageTemplate
{
public XMLMessage(string userId) : base(userId) { }
public override List Get()
{
return new List { new MessageModel("XML方式獲取Message", DateTime.Now) };
}
}
模板方法模式精髓
TemplateMethodGet() 定義算法骨架:先驗證用戶權限 → 再獲取數據
ValidateUser() 在基類實作 (可被覆寫),Get() 延遲到子類實作
- 子類 不改變算法結構 下重新定義特定步驟 (數據獲取方式)
- 新增持久化方式 (如 JSON) 僅需繼承抽象類實作
Get(),復用驗證邏輯