假設有一個軟件公司,每當有新產品推出,就把信息通知到一些客戶。
把通知這個動作抽象成一個接口。
public interface IService{void Notif();}
客戶如果想獲得通知,就需要實現以上的接口。這里的客戶被看作是觀察者。
public class CustomerA : IService{public void Notif(){Console.WriteLine("客戶A收到通知了~~");}}public class CustomerB : IService{public void Notif(){Console.WriteLine("客戶B收到通知了~~");}}
作為軟件公司來講,維護著一個客戶的集合,并提供注冊、取消注冊的方法,往這個集合添加或刪除客戶。每當有通知的時候,就遍歷客戶集合,讓IService執行通知。軟件公司可以看作是一個被觀察對象,或者說是發起動作的源頭。
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();}}}
新聞熱點
疑難解答