| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #include "ObserverPattern.h"
- void AbstractNewsAgency::addObserver(AbstractObserver* observer)
- {
- m_listObservers.push_back(observer);
- }
- void AbstractNewsAgency::removeObserver(AbstractObserver* observer)
- {
- m_listObservers.remove(observer);
- }
- void MorgensNewsAgency::notifyObservers(std::string news)
- {
- SPDLOG_INFO("摩根斯新闻社报纸的订阅者一共有: {} 位", m_listObservers.size());
- for (auto observer : m_listObservers)
- {
- observer->update(news);
- }
- }
- void GossipNewsAgency::notifyObservers(std::string news)
- {
- SPDLOG_INFO("八卦新闻社报纸的订阅者一共有: {} 位", m_listObservers.size());
- for (auto observer : m_listObservers)
- {
- observer->update(news);
- }
- }
- void testObserverPattern()
- {
- /* 创建新闻社 */
- MorgensNewsAgency* morgensAgency = new MorgensNewsAgency();
- GossipNewsAgency* gossipAgency = new GossipNewsAgency();
- /* 创建订阅者 */
- AbstractObserver* observerA = new Dragon("蒙奇·D·龙", morgensAgency);
- AbstractObserver* observerB = new Shanks("香克斯", morgensAgency);
- AbstractObserver* observerC = new Bartolomeo("巴托洛米奥", gossipAgency);
- /* 发布新闻 */
- morgensAgency->notifyObservers("蒙奇·D·路飞成为新世界的新的四皇之一, 赏金30亿贝里!!!");
- SPDLOG_INFO("=========================================");
- gossipAgency->notifyObservers("女帝汉库克想要嫁给路飞, 给路飞生猴子, 哈哈哈...");
- delete observerA;
- delete observerB;
- delete observerC;
- delete morgensAgency;
- delete gossipAgency;
- }
|