Files
2026-06-01 12:46:52 +02:00

38 lines
719 B
C++

#pragma once
//#include <vector>
#include <algorithm>
namespace rp {
namespace mixin {
class observable
{
public:
virtual ~observable() {}
virtual void update() = 0;
};
class subjectable
{
public:
subjectable() {}
virtual ~subjectable() {}
virtual void attach( observable* observer )
{
m_observers.push_back( observer );
}
virtual void detach( observable* observer )
{
m_observers.erase( std::remove( m_observers.begin(), m_observers.end(), observer ), m_observers.end() );
}
virtual void notify()
{
std::for_each( m_observers.begin(), m_observers.end(), std::mem_fun( &observable::update ) );
}
private:
std::vector< observable* > m_observers;
};
} // mixin
} // rp