网站大量收购闲置独家精品文档,联系QQ:2885784924

08计科1班18号罗会枫《设计模式》中期检查.doc

08计科1班18号罗会枫《设计模式》中期检查.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
08计科1班18号罗会枫《设计模式》中期检查

华南农业大学珠江学院 《设计模式》课题中期检查 专 业:____计算机科学与技术_______ 班 级:___08计算机科学与技术01___ 学 号: __200830400118____________ 姓 名:___罗会枫__________________ 导 师:___张基温__________________ 题 目:对观察者模式和代理模式的设计 完成日期:2011年6月8日 对观察者模式和代理模式的初步认识和实例初步设计,具体如下所示: 1.观察者模式 1.1实例分析 对于观察者模式,本人现在的构思是设计一个读者“订阅电视报纸”的实例,由于现对观察者模式的理解不够深入,所以对其进行简单的设计。 “订阅电视报纸”的意义就在于读者可以随意订阅不同报社的不同类的内容,管理员可以对内容进行更新操作,这个操作是在客户端进行的。其实就是一个MVC模式的体现。在本例中,设计的是一个推和拉的过程。所谓推就是具体主题将变化后的数据全部交给具体观察者。所谓拉就是具体主题不将变化后的书籍交给具体观察者,而是提供了获得这些数据的方法,具体观察者在得到通知后,可以调用具体主题提供的方法得到数据,但需要自己判断数据是否发生了变化。 1.2“订阅电视报纸”UML类图 图1-1 “订阅电视报纸”UML类图 1.3代码设计 #include string #include iostream #include vector using namespace std; class ClassifySubject; //媒体 class MediaObserver { protected: string name; ClassifySubject* cz; string content; public: MediaObserver(string nm,string ct,ClassifySubject* c) { name=nm; cz=c; content=ct; } virtual void Update()=0; }; //具体的观察者 class Media:public MediaObserver { public: Media(string nm,string ct,ClassifySubject* c):MediaObserver(nm,ct,c) { } virtual void Update(); }; //抽象通知者 class ClassifySubject { public: string action1; vectorMediaObserver*observers; virtual void Attach(MediaObserver* observer)=0; virtual void Notify()=0; }; //具体通知者 分类 class Classify:public ClassifySubject { public: void Attach(MediaObserver* mo) { observers.push_back(mo); } void Notify() { vectorMediaObserver*::iterator p=observers.begin(); while(p!=observers.end()) { (*p)-Update(); p++; } } }; void Media::Update() { coutendl; cout客户账号:name \n订阅的是《cz-action1》报社的cz-action2分类 \n客户收到的内容是:contentendl; } int main() { string name; string content; string MD1; string MD2; cout罗会枫_观察者模式测试结果:endl; cout管理员更新内容:; cincontent; cout请输入客户的账号:; cinname; cout请输入您想订购的报社:南方日报、广州日报、中国新闻出版报、中国图书商报、中华读书报等等报社endl; coutMD1=; cinMD1; cout请输入您想订阅的种类:新闻、学习、图书、体育、车行、营养等等endl; coutMD2=; cinMD2; ClassifySubject *p=new Classify(); MediaObserver *m=new Media(name,content,p); p-Attach(m); p-action1=MD1; p-action2=MD2

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档