提供者模式的基石在於清晰的領域模型定義與抽象契約。本文介紹核心實體 MessageModel 以及定義提供者行為契約的 MessageProvider 抽象類別。
簡潔的資料傳輸物件 (DTO),封裝訊息內容與發布時間:
public class MessageModel {
public MessageModel(string msg, DateTime pt) {
_message = msg;
_publishTime = pt;
}
private string _message;
public string Message { get => _message; set => _message = value; }
private DateTime _publishTime;
public DateTime PublishTime { get => _publishTime; set => _publishTime = value; }
}
設計重點:
init (C# 9+)。繼承 ProviderBase (System.Configuration.Provider),強制實作兩大核心操作:
public abstract class MessageProvider : ProviderBase {
public abstract bool Insert(MessageModel mm);
public abstract List<MessageModel> Get();
}
Initialize(name, config) 呼叫機制。ProviderSettings 屬性映射。Name、Description 屬性利於管理與除錯。List<T> 而非 IEnumerable<T>,便於上層直接操作。ProviderException 或自訂異常。未來若需新增操作 (如 Update, Delete, GetById),可採用介面隔離原則:
public interface IMessageReader { List<MessageModel> Get(); }
public interface IMessageWriter { bool Insert(MessageModel mm); }
public interface IMessageProvider : IMessageReader, IMessageWriter { }
並讓 MessageProvider 實作 IMessageProvider,既保持向後相容又支援依賴注入容器的精細解析。