[转载] C#面向对象设计模式纵横谈——19 Observer观察者模式
2012-09-10 17:07
295 查看
主讲:李建忠来源:http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/CsharpOOD.aspx
Observer
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
ObserverEvent
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
Observer
publicinterfaceIAccountObserver
{
voidUpadate();
}
publicclassATM
{
BankAccountbankAccount;
publicvoidprocess()
{
bankAccount.Withdraw(data);
}
}
publicclassBankAccount
{
ArrayList<IAccountObserver>observerList=newArrayList<IAccountObserver>();
publicvoidWithdraw(intdata)
{
//...
userAccountArgsargs=new
foreach(IAccountObserverobserverinobserverList)
{
observer.Update(args);
}
}
publicvoidAddObserver(IAccountObserverobserver)
{
observerList.Add(observer);
}
}
publicclassEmailer
{
publicvoidSendEmail(stringto)
{
//...
}
}
publicclassMobile
{
publicvoidSendNotification(stringphoneNumber)
{
//...
}
}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
ObserverEvent
publicdelegatevoidAccountchangeEventhandler(
objectsender,
AccountChangeEventArgsargs);
publicclassBankAccount
{
publiceventAccountChangeEventHandlerAccountChange;
publicvoidWithdraw(intdata)
{
//...
AccountChangeEventArgsargs=newAccountChangeEventArgs();
foreach(IAccountObserverobserverinobserverList)
{
observer.Update(args);
}
}
protectedvirtualOnAccountChange()
{
if(AccountChange!=null)
{
AccountChange(args);
}
}
}
publicclassEmailer
{
publicvoidUpdate(objectsender,UserAccountArgsargs)
{
//...
}
}
classApp
{
publicstaticvoidMain()
{
BankAccountbankAccount=newBankAccount();
Emaileremailer=newEmailer();
bankAccount.AccountChange+=newAccountChangeEventHandler(emailer.Update)
//...
bankAccount.Withdraw(234);
}
}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
相关文章推荐
- [设计模式] 19 观察者模式 Observer Pattern
- .NET设计模式(19):观察者模式(Observer Pattern)
- .NET设计模式(19):观察者模式(Observer Pattern)
- 【转】.NET设计模式(19):观察者模式(Observer Pattern) -博客园 TerryLee
- 设计模式(19)-行为型-观察者模式(Observer)
- 转载:C++设计模式之Observer(观察者)模式 http://www.cnblogs.com/chain2012/archive/2011/01/24/1943322.html
- C#面向对象设计模式纵横谈 学习笔记19 Observer观察者模式(行为型模式)
- 【设计模式 - 19】之观察者模式(Observer)
- 【设计模式 - 19】之观察者模式(Observer)
- .NET设计模式(19):观察者模式(Observer Pattern)
- .NET设计模式(19):观察者模式(Observer Pattern)
- .NET设计模式(19):观察者模式(Observer Pattern)
- .NET设计模式(19):观察者模式(Observer Pattern)
- .NET设计模式(19):观察者模式(Observer Pattern)(转)
- 设计模式之19 - 观察者模式Observer
- "围观"设计模式(19)--行为型之观察者模式(Observer Pattern)
- 设计模式(19)——观察者 Observer
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- 设计模式(19)—— Observer (观察者)
- JAVA设计模式(19):行为型-观察者模式(Observer)