觀察者模式中,每個觀察者實作共同介面 IMessage,但提供不同的具體行為。本例展示兩種不同的訊息持久化方式:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Observer
{
///
/// SQL 方式操作 Message(ConcreteObserver)
///
public class SqlMessage : IMessage
{
///
/// 插入 Message
///
/// Message 實體物件
/// 處理結果描述
public string Insert(MessageModel mm)
{
return "sql方式:" + mm.Message + " " + mm.PublishTime.ToString();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Observer
{
///
/// XML 方式操作 Message(ConcreteObserver)
///
public class XMLMessage : IMessage
{
///
/// 插入 Message
///
/// Message 實體物件
/// 處理結果描述
public string Insert(MessageModel mm)
{
return "XML方式:" + mm.Message + " " + mm.PublishTime.ToString();
}
}
}
IMessage,無需修改主題邏輯。兩個觀察者共同實作 IMessage 介面,確保主題能統一對待不同觀察者,完美詮釋「面向介面編程」的精髓。