РЕАЛИЗАЦИЯ ПАТТЕРНА НАБЛЮДАТЕЛЬ (OBSERVER) НА СОБЫТИЯХ C#
Классический паттерн Наблюдатель имеет сильную связь между объектами, которую можно развязать использую встроенные события в c#.
// интерфейс издателя
public delegate void eiSubjectEventHandler(eiSubject subject);public interface eiSubject
{
event eiSubjectEventHandler OnUpdate;
void GenereteEventUpdate();
}
// реализация класса издателя
class ecSubject : eiSubject{
private event eiSubjectEventHandler _OnUpdate = null;
public event eiSubjectEventHandler OnUpdate
{
add
{
lock (this)
{
_OnUpdate -= value;
_OnUpdate += value;
}
}
remove { lock (this) { _OnUpdate -= value; } }
}
public void GenereteEventUpdate()
{
eiSubjectEventHandler handler = _OnUpdate;
if (handler != null)
{
handler(this);
}
}
}
// реализация интерфейса подписчика
public interface eiObserver{
void DoOnUpdate(eiSubject subject);
}
// реализация класса подписчика
class ecObserver : eiObserver
{
public virtual void DoOnUpdate(eiSubject subject)
{
}
}
Это мой эксперементальный вариант.
Комментариев нет:
Отправить комментарий