C#觀察者模式(Observer Pattern)實例教程
本文以實例形式簡單講述了C#觀察者模式,分享給大家供大家參考。具體實現(xiàn)方法如下:
現(xiàn)在假設有一個軟件公司,每當有新產(chǎn)品推出,就把信息通知到一些客戶。
把通知這個動作抽象成一個接口。代碼如下所示:
public interface IService
{
void Notif();
}
客戶如果想獲得通知,就需要實現(xiàn)以上的接口。這里的客戶被看作是觀察者。
public class CustomerA : IService
{
public void Notif()
{
Console.WriteLine("客戶A收到通知了~~");
}
}
public class CustomerB : IService
{
public void Notif()
{
Console.WriteLine("客戶B收到通知了~~");
}
}
作為軟件公司來講,維護著一個客戶的集合,并提供注冊、取消注冊的方法,往這個集合添加或刪除客戶。每當有通知的時候,就遍歷客戶集合,讓IService執(zhí)行通知。軟件公司可以看作是一個被觀察對象,或者說是發(fā)起動作的源頭。
public class MyCompany
{
private IList<IService> subscribers = new List<IService>();
public void Subscribe(IService subscriber)
{
subscribers.Add(subscriber);
}
public void CancelSubscribe(IService subscriber)
{
subscribers.Remove(subscriber);
}
public void SendMsg()
{
foreach (IService service in subscribers)
{
service.Notif();
}
}
}
客戶端創(chuàng)建軟件公司實例、創(chuàng)建觀察者實例、注冊或取消觀察者等。
class Program
{
static void Main(string[] args)
{
MyCompany company = new MyCompany();
IService customerA = new CustomerA();
IService customerB = new CustomerB();
company.Subscribe(customerA);
company.Subscribe(customerB);
company.SendMsg();
Console.ReadKey();
}
}
總結:
① 把一個通知的動作抽象成接口
② 觀察者如果想接收到通知,就實現(xiàn)通知接口
③ 被觀察對象做3件事情:維護觀察者的集合,注冊/取消觀察者,發(fā)起動作遍歷觀察者集合讓通知接口來做事
希望本文所述對大家C#程序設計的學習有所幫助。
相關文章
C#操作數(shù)據(jù)庫總結(vs2005+sql2005)
C#操作數(shù)據(jù)庫總結,每次做項目都會用到數(shù)據(jù)庫,對數(shù)據(jù)庫的操作都是糊里糊涂從書里找代碼用。通過昨天晚上與今天早上的努力,把數(shù)據(jù)庫的操作整理了一下,下面把整理結果做個小結2012-09-09

