The Observer design pattern is a perfect fit for scenario where you want to notify multiple subscribers about updates.
#include <vector>
class Observer {
public:
virtual void update(const std::string& message) = 0;
};
class Subject {
public:
virtual void registerObserver(Observer* observer) = 0;
virtual void unregisterObserver(Observer* observer) = 0;
virtual void notify(const std::string& message) = 0;
protected:
std::vector<Observer*> observers_;
};
class NewsFeed : public Subject {
public:
void publishNews(const std::string& news) {
// Update state
news_ = news;
notify(news);
}
private:
std::string news_;
void registerObserver(Observer* observer) override {
observers_.push_back(observer);
}
void unregisterObserver(Observer* observer) override {
// Implement logic to remove observer from vector
}
void notify(const std::string& message) override {
for (auto observer : observers_) {
observer->update(message);
}
}
};
class User : public Observer {
public:
void update(const std::string& message) override {
std::cout << "User received update: " << message << std::endl;
}
};
int main() {
NewsFeed newsFeed;
User user1, user2;
newsFeed.registerObserver(&user1);
newsFeed.registerObserver(&user2);
newsFeed.publishNews("Breaking news!");
return 0;
}
Follow more posts @ https://jdecodes.wordpress.com
My all design pattern articles :
- https://jdecodes.wordpress.com/2024/07/13/builder-design-pattern/
- https://jdecodes.wordpress.com/2024/07/13/command-design-pattern/
- https://jdecodes.wordpress.com/2024/07/13/iterator-design-pattern/
- https://jdecodes.wordpress.com/2024/07/13/mediator-design-pattern/
- https://jdecodes.wordpress.com/2024/07/19/state-design-pattern/
- https://jdecodes.wordpress.com/2024/07/19/memento-design-pattern/
- https://jdecodes.wordpress.com/2024/07/19/observer-design-pattern/
- https://jdecodes.wordpress.com/2024/07/19/strategy-pattern/
- https://jdecodes.wordpress.com/2024/07/20/visitor-design-pattern/
- https://jdecodes.wordpress.com/2024/07/20/adapter-desing-pattern/
- https://jdecodes.wordpress.com/2024/07/20/bridge-design-pattern/
- https://jdecodes.wordpress.com/2024/07/22/composite-desing-pattern/
- https://jdecodes.wordpress.com/2024/07/22/facade-design-pattern/
- https://jdecodes.wordpress.com/2024/07/22/decorater-design-pattern/
Leave a comment