欢迎来到天天文库
浏览记录
ID:39683877
大小:2.31 MB
页数:32页
时间:2019-07-09
《设计模式.观察者模式(Observer)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、设计模式(DesignPattern)张凯副教授计算机学院软件工程系问题(Problem)晕,老板回来了,我不知道股市特别火,同事在上班期间偷偷看股票行情如果老板出门回来,公司前台MM电话事先通知可是…..老板今天刚一回来,让前台MM去打印资料了同事背对着大门大喊了一声“耶!我的股票涨停啦!”程序模拟发生的事情问题(Problem)classSecretary//前台秘书类{//同事列表privateIListobservers=newList();privat
2、estringaction;//增加publicvoidAttach(StockObserverobserver){observers.Add(observer);}//减少publicvoidDetach(StockObserverobserver){observers.Remove(observer);}//通知publicvoidNotify(){foreach(StockObserveroinobservers)o.Update();}//前台状态publicstringSecretaryAction{get{r
3、eturnaction;}set{action=value;}}}问题(Problem)//看股票的同事classStockObserver{privatestringname;privateSecretarysub;publicStockObserver(stringname,Secretarysub){this.name=name;this.sub=sub;}publicvoidUpdate(){Console.WriteLine("{0}{1}关闭股票行情,继续工作!",sub.SecretaryAction,na
4、me);}}问题(Problem)staticvoidMain(string[]args){//前台秘书MMSecretaryMM=newSecretary();//看股票的同事StockObservertongshi1=newStockObserver("魏关姹",MM);StockObservertongshi2=newStockObserver("易管查",MM);//前台记下了两位同事MM.Attach(tongshi1);MM.Attach(tongshi2);//发现老板回来MM.SecretaryActio
5、n="老板回来了!";//通知两个同事MM.Notify();Console.Read();}如果有人聊QQ,有人看NBA都需要通知,如何修改?思考:违背了那些原则?问题(Problem)//抽象观察者abstractclassObserver{protectedstringname;protectedSecretarysub;publicObserver(stringname,Secretarysub){this.name=name;this.sub=sub;}publicabstractvoidUpdate();}问
6、题(Problem)//看股票的同事classStockObserver:Observer{publicStockObserver(stringname,Secretarysub):base(name,sub){}publicoverridevoidUpdate(){Console.WriteLine("{0}{1}关闭股票行情,继续工作!",sub.SecretaryAction,name);}}//看NBA的同事classNBAObserver:Observer{publicNBAObserver(stringnam
7、e,Secretarysub):base(name,sub){}publicoverridevoidUpdate(){Console.WriteLine("{0}{1}关闭NBA直播,继续工作!",sub.SecretaryAction,name);}}问题(Problem)classSecretary//前台秘书类{//同事列表privateIListobservers=newList();privatestringaction;//增加publicvoidAttach(Obse
8、rverobserver){observers.Add(observer);}//减少publicvoidDetach(Observerobserver){observers.Remove(observer);}//通知publicvoidNotify(){foreach(Observeroinobservers)o
此文档下载收益归作者所有