c_cpp CPP:观察者设计模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp CPP:观察者设计模式相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <vector>

class Entity
{
};

enum Event
{
    SOME_EVENT_A,
    SOME_EVENT_B,
};

class Observer
{
public:
    virtual ~Observer() {}
    
    // The parameters can be adjusted for specific need
    virtual void OnNotify(const Entity& entity, Event event);
};

class Ahievements : public Observer
{
public:
    virtual void OnNotify(const Entity& entity, Event event)
    {
        switch(event)
        {
            case SOME_EVENT_A:
                // Do something
                break;
            case SOME_EVENT_B:
                // Do something
                break;
        }
    }
};

class Subject
{
public:

    void OnNotify(const Entity& entity, Event event)
    {
        for(Observer* o : _observers)
        {
            o->OnNotify(entity, event);  
        }
    }
    
    void AddObserver(Observer* observer)
    {
        // Add to array
    }
    
    void RemoveObserver(Observer* observer)
    {
        // Remove from array
    }

    std::vector<Observer*> _observers;
}

class Physics : public Subject
{
    
}

int main()
{
    return 0;
}

以上是关于c_cpp CPP:观察者设计模式的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 简单的NSManagedObject更新观察器

c_cpp [illumos和bsros datalink layer]用于观察dladm和libdladm行为的Dtrace片段#tags:dladm,datalink,数据链管理,

c_cpp C ++命令设计模式

c_cpp C ++工厂设计模式

c_cpp myKaarma模式问题

c_cpp glob模式匹配