使用智能指针的C ++中的“Observer-Pattern”?

时间:2013-07-15 07:31:57

标签: c++ design-patterns shared-ptr weak-ptr

专业人士,

这是我第一次向这个董事会发帖,过去帮我解决了很多问题。我仍然是一名编程新手,一直在努力学习编程和编程。过去几个月的软件开发。

我最近处理了“c ++ 11-Smart Pointers”这个主题并决定重写我几周前学到的所有设计模式,包括使用shared_ptr& amp;的“观察者模式”。 weak_ptr用于资源管理。

当我试图编写一个观察者模式的简单实现时(比如在头部优先设计模式或E.Gamma设计模式中),对可观察主体和观察者使用接口类,并且恰好是一个具体的每个类的类,我从Visual Studio收到各种错误消息。 我只是不明白如何在这种模式中结合shared_ptr和weak_ptr,这可能是因为我仍然不完全理解两者的结合。

不幸的是,即使在互联网上彻底搜索也没有为我提供一个简单的“使用智能指针的观察者模式”的例子,可以作为我的方向。

因此,我想知道,如果你们中的一个人知道在哪里可以找到这样一个简单的工程,或者非常友好地向我提供你自己的一个。两者都非常有用: - )

非常感谢

coderAndi

1 个答案:

答案 0 :(得分:5)

观察者模式是智能情况的典型示例 指针(至少是通常的候选人)是不合适的。 无论是主题还是对象"拥有"另一个;每个人都有 自己的生命。实际上,经常使用观察者 pattern是指一个对象有一个指向另一个对象的指针 它并不拥有。它注册为观察者,以便 当观察到的物体被破坏时通知。

听起来像你在攻击整个事情 向后。你有一个解决方案(智能指针),你就是 试图让每个问题都适合它。那永远不会奏效。