设计模式——观察者

例:在一个部队中(一个项目),将军的职责是发号施令,士兵的职责是根据命令去执行不同的任务;

注意:在这里,将军是被观察者(A),士兵是观察者(B);

           A是唯一的,B可以是任意个;

          所谓观察,其实是A主动将信息传递给B;

举例分析

  1. 假设此时有A,B俩个类;
  2. 在A类中实例一个B类的成员,作为A类的成员变量;
  3. 此时,在A类的函数中就可以使用B类的对象,来调用B的函数;
  4. 如果B的函数带参数,而此时该参数是由A类处理得到后,作为参数传递给B。那么,此时B得到A的信息,进行处理就是一对一的观察者模式;

总结:此例中,A是被观察者

                         B是观察者

                          B函数的参数就是观察到的信息

一对一实现了,一对多如何实现?

答:在A类中实例更多的B类对象,C类对象,D类。。。对象;

实例化对象太多,不好看,咋办?

答:将对象分类,用容器放置,如vector<B*>;

或者,(初步可以不考虑这个)所有的观察者类继承同一个观察者基类,然后用多态来处理

理解误区:刚开始以为,观察者模式是监督的意思,就是一个人监督一群人,当其中某个人有变化时,监督者要作出对应的回馈反应。但貌似将主动,被动的关系弄反了;到底谁观察谁,谁是主动,谁是被动,搞清楚了这个问题,观察者模式就好理解了;

项目中用法:一个管理类(初步筛选),根据不同的信息将其分发给不同的类进行处理(最终处理);

实例化具体代码请百度

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值