名称:观察者模式
说说:把你的电话留下,有事我会通知你,回去等我的消息吧!
动机:
适用性:
参与者:
结果:定义了对象之间一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知
类图:
说明: 分推模式和拉模式,此为推模式。
demo c#:
namespace observePattern
{
class Program
{
static void Main(string[] args)
{
iObserve _observe1 = new observe();
iObserve _observe2 = new observe();
iObserve _observe3 = new observe();
iSubject _subject = new subject();
_subject.registerObserve(_observe1);
_subject.registerObserve(_observe2);
_subject.registerObserve(_observe3);
_subject.notify();
_subject.removeObserve(_observe2);
_subject.notify();
Console.Read();
}
}
// main code
interface iObserve {
void update(iSubject s);
}
interface iSubject {
void registerObserve(iObserve o);
void removeObserve(iObserve o);
void notify();
}
class observe : iObserve{
public void update(iSubject s){
Console.WriteLine("got it!");
}
}
class subject : iSubject{
List<iObserve> _observes = new List<iObserve>();
public void registerObserve(iObserve o) {
this._observes.Add(o);
}
public void removeObserve(iObserve o) {
this._observes.Remove(o);
}
public void notify() {
foreach (var o in this._observes){
o.update(this);
}
}
}
}