吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1481|回复: 8
收起左侧

[C&C++ 转载] [C++]【笔记】观察者模式

[复制链接]
天上飞来一只 发表于 2020-10-24 17:12
代码编译环境:VS2019
来一波热心吧!鼓励一下新人,谢谢
[C++] 纯文本查看 复制代码
#include <iostream>
#include <list>
using namespace  std;

//博客
class CBlog
{
public:
	CBlog(string strName)
	{
		m_strName = strName;
	}
public:
	string m_strName;
	string m_strConnext;
};

//观察者
class IObserver
{
public:
    virtual void Notify(CBlog* pBlg) = 0;
};

 //用户 1:N
class CPerson:public IObserver
{
public:
    CPerson(string strName)
    {
        m_strName = strName;
    }
    void AddPerson(IObserver* pObj)
    {
        m_lstObj.push_front(pObj);
    }
    void SendConnext(string strConnext)
    {
        CBlog* pBlg = new CBlog(m_strName);
        pBlg->m_strConnext = strConnext;
        
        //遍历好友列表,调用回复
        auto it = m_lstObj.begin();
        while (it!=m_lstObj.end())
        {
            (*it)->Notify(pBlg);
            ++it;
        }
    }
    //重写接口收到Notify通知
	void Notify(CBlog* pBlg)  
	{
        cout << "收到用户Notify:" << pBlg->m_strName <<pBlg->m_strConnext << endl;
	}
    
public:
    string m_strName;
    string m_strConnext;
    list<IObserver*> m_lstObj;
    list<CBlog*> m_lstBlg;
};

int main()
{
    std::cout << "Hello World!\n";
    //创建用户
    CPerson* p1 = new CPerson("战士");
    CPerson* p2 = new CPerson("法师");
    CPerson* p3 = new CPerson("道士");

    //加好友
    p1->AddPerson(p2);
    p1->AddPerson(p3);

    //p1说话
    p1->SendConnext("打BOSS!!");
}

1.png

免费评分

参与人数 1热心值 +1 收起 理由
无敌小车 + 1 08年注册的新人

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

无敌小车 发表于 2020-10-24 17:29
感谢楼主分享
Insist_2020 发表于 2020-10-24 17:37
tt0202 发表于 2020-10-24 17:40
yc0205 发表于 2020-10-24 18:08
感谢楼主分享
sergin 发表于 2020-10-24 18:16
支持一波!!
火绒 发表于 2020-10-24 18:56
你管这叫新人?????
4561pkpk 发表于 2020-10-24 21:27
感谢分享,正好计划准备研究C++
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表