設計模式-觀察者模式
阿新 • • 發佈:2018-05-13
設計模式 觀察者模式
//主題
interface Subject
{
void Notify();
string msg { get; set; }
UpdateHandler Update { get; set; }
}
delegate void UpdateHandler();
class ChildSubject : Subject
{
public UpdateHandler Update { get; set; }
public string msg { get; set; }
public void Notify()
{
Update();
}
}
//觀察者
abstract class Observer
{
public string name;
public Subject subject;
public Observer(string _name, Subject _subject)
{
name = _name;
subject = _subject;
}
}
class Site: Observer
{
public Site(string _name, Subject _subject) : base(_name, _subject)
{
}
public void RefreshSite()
{
Console.WriteLine("{0},{1}需要同步更新", subject.msg,name);
}
}
class App: Observer
{
public App(string _name, Subject _subject) : base(_name, _subject)
{
}
//方法名稱不一樣,所以抽象沒意義
public void RefreshApp()
{
Console.WriteLine("{0},{1}需要同步更新", subject.msg, name);
}
}
//前端
static void Main(string[] args)
{
Subject subject = new ChildSubject();
Site site = new Site("電腦網站", subject);
App app = new App("手機APP", subject);
subject.msg = "數據庫被更新了";
subject.Update += site.RefreshSite;
subject.Update += app.RefreshApp;
subject.Notify();
Console.ReadLine();
}
總結:觀察者模式適用於某個對象發生變化後會引起其他對象發生連鎖反應的情況下,(兩個類有依賴關系的情況下)。
設計模式-觀察者模式