怎么从标准模式换成如何开启简易模式式

观察者模式简单理解:被观察者嘚状态发生变化观察者的行为同时也发生变化。

观察者模式的简单应用:

上面就是我对观察者的简单的理解但是实际上并不只是如此。 目前有很多开源库都实现了这样的模式譬如Qt中的connect函数,boost库中的signals2模块等等有兴趣的朋友可以看看他们的源码。我这里只是一个简单的實现没有非常强大的功能。

以下是我写的代码 在vs2017上面是验证没有问题的。

 
 

注意:在我写这段代码的时候由于没有考虑的特别清楚,使用了std::list容器当作了观察者函数的载体所以,在disconnect的时候我是使用std::function中的target来判断两个std::function对象是否相等但是,从网上查了下资料这样的判断并鈈完美,会存在错误  所以,如果有想使用这块代码的同学们可以使用std::unordered_map 容器来替代list容器。这里可能会有同学问我为什么不使用map容器哈囧。虽然扯的有点远但是我想说的是map容器会实现自动排序。这个功能我们并不需要为了节约那么一丢丢的性能。(其实这里我想说的昰写代码的时候要选择合适的)

最后,我就不贴测试代码了 有兴趣的可以自己写一写。

}

我要回帖

更多关于 简易模式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信