软件设计实验21
.实验 21:观察者模式
[实验任务一]:股票提醒
当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include<iostream> #include<list> #include<string> using namespace std; //抽象观察者 class Observer{ protected : string name; public : virtual void buy()=0; virtual void cry()=0; }; //具体观察者 class Gumin: public Observer{ public : Gumin(string name){ this ->name=name; } void buy(){ cout<< "股民" <<name<< "买了一些股票" <<endl; } void cry(){ cout<< "股民" <<name<< "哭了" <<endl; } }; //抽象主题类 class Subject{ protected : list<Observer*> observers; public : void attach(Observer *obs){ observers.push_back(obs); } void detach(Observer *obs){ observers. remove (obs); } virtual void up()=0; virtual void down()=0; }; //具体主题类 class Gufen: public Subject{ public : void up(){ cout<< "*****股份上涨3%*****" <<endl; list<Observer*>::iterator iter = observers.begin(); for (; iter != observers.end(); iter++) (*iter)->buy(); } void down(){ cout<< "*****股份下跌5%*****" <<endl; list<Observer*>::iterator iter = observers.begin(); for (; iter != observers.end(); iter++) (*iter)->cry(); } }; //测试函数 int main(){ Observer *obs1,*obs2; obs1= new Gumin( "安安" ); obs2= new Gumin( "妍妍" ); Subject *sub; sub= new Gufen(); sub->attach(obs1); sub->attach(obs2); sub->up(); sub->down(); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2021-11-02 pintia7-1 线性表A,B顺序存储合并