博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++11观察者模式实现
阅读量:2170 次
发布时间:2019-05-01

本文共 707 字,大约阅读时间需要 2 分钟。

近日阅读《深入应用C++11》一书,上面提到使用C++11实现一个观察者模式到举例。

真巧,笔者近日参与一个基于GB28181协议的高速路视频监控平台项目,需要开发国标媒体服务软件,正想着需要使用观察者模式来实现媒体流到逐级传递。

使用已有的技术也可以实现这样的功能,笔者之前一直使用的是回调函数的方法来将数据从一个模块转发给下一级模块(更多请阅读《》,近期还要更新此文),实现简单,代码清晰,方便阅读和维护。但是一直使用老技术、开发技能就没法得到提高,也无法发挥现代C++提供的更具生产力的工具库的威力,于是决定换一种技术来做同样的事情,以加深对现代C++的使用。

这里面涉及到的主要技术点包括如下一些:

  • 如何利用模板技术做出接口类型不同的通知函数给观察者?
  • 如何利用可变参数做出接口参数量不同的通知函数给观察者?
  • 如何利用可调用对象或std::function<T>来支持不同种类的观察者?
  • 能不能做出一个基类,既能够做观察者又能够作为被观察者,然后定义它的派生类,利用C++提供的多态技术,可以以统一的针对该类(基类)的接口供调用者使用,以达到任意对象随意搭配,就类似于搭积木的那种开发体验。
  • 能不能利用智能指针std::shared_ptr<T>来管理基类的对象指针,以确保内存到自动维护?

经过笔者阅读《深入应用C++11》一书的示例,并仔细推敲尝试之后,实现了一种能实现上述功能需求的方法,上传到百度网盘 链接:https://pan.baidu.com/s/1pqHjoaM8zpMBQmRfddxCzw 密码:rdqo,以供大家参考。

不足之处还请读者赐教!不胜感激!交流QQ 1010316426

转载地址:http://bbmzb.baihongyu.com/

你可能感兴趣的文章
<stdarg.h>头文件的使用
查看>>
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>
Git安装配置
查看>>
linux中fork()函数详解
查看>>
C语言字符、字符串操作偏僻函数总结
查看>>
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
逆序对的数量(递归+归并思想)
查看>>
数的范围(二分查找上下界)
查看>>
算法导论阅读顺序
查看>>