我寫了一個簡單的觀察者模式,其中觀察者具有「void notify(std :: string)」函數,可觀察對象在每個註冊的觀察者上調用它並使用標記字符串傳輸數據。這是非常簡單,容易和有效的,但我需要向前邁進。如何使用觀察者模式的信號和插槽?
我需要實現它與信號和插槽(例如使用boost :: signals2)。但是我不知道插槽和信號的外觀應該如何以及它們應該如何放置。我也不知道如何允許註冊我想要的任何函數,而不僅僅是void(string)。
我找不到任何使用此模式的信號和插槽的良好資源。然而大家都說,信號和插槽對於觀察者模式來說是驚人的。你能指導我如何使用信號和插槽觀察者模式?
我沒有信號電流實現如下:
class observable
{
public:
void register(observer *);
void unregister(observer *);
protected:
void notifyObservers()
{
for every registered observer
observer.notify(std::string tokenized_string);
}
}
class observer
{
public:
void notify(std::string) = 0;
}
我需要改變這種模式使用信號和槽,但我不知道應該怎麼樣是有用的,精心設計和靈活。
什麼問題? – 2013-02-14 11:07:30
@Denis Ermolin我不知道應該如何使用這種模式的信號和插槽(沒有信號的當前實現是不夠的)。這就是爲什麼我需要一點指導,它應該如何使用信號和插槽。 – user1873947 2013-02-14 11:08:16
你讀過[** Boost.Signals **](http://www.boost.org/doc/libs/release/doc/html/signals.html)嗎? – Johnsyweb 2013-02-14 11:16:43