Имя Наблюдателю, который может изменить значения? - PullRequest
0 голосов
/ 06 октября 2011

Я занимаюсь разработкой класса, в котором я ассоциирую события с наблюдателями, но в этом случае наблюдатели могут использовать параметры, полученные в параметре, для изменения значений внутри объекта.

Является ли Observer правильным именемдля тех "наблюдателей"?Я просто ищу правильное имя, чтобы поставить его (если уже есть шаблон для этого случая, это было бы здорово)

Редактировать: Вот пример

A является наблюдаемым объектом

B является наблюдателем

A имеет свойство, представленное целым числом, а функция B гарантирует, что свойство всегда выше 50.

Поэтому, когда A запускает событие, B будет вызывать что-то вроде:

void BObserverMethod(Action action, A a)
{
    if(a.property =< 50)
       a.property = 50;
}

Вопрос в том, что я могу назвать B?Правильно ли называть это Наблюдателем, когда он делает больше, чем наблюдает?

1 Ответ

1 голос
/ 07 октября 2011

Шаблон наблюдателя действительно просто обращается к разъединенному способу, которым несколько Наблюдателей могут быть обновлены об изменениях в Субъекте . В шаблоне нет ничего, что мешало бы наблюдателю отреагировать на обновление, установив какое-либо значение в теме.

Однако здравый смысл подсказывает, что наблюдатель должен быть осторожен при изменении наблюдаемых свойств субъекта; для двух или более таких наблюдателей было бы легко отправиться за раундом обновлений. Если два наблюдателя с противоположными намерениями изменили одно и то же свойство, вы легко могли бы оказаться в бесконечном цикле:

void BObserverMethod(Action action, A a)
{
    if(a.property =< 50)
       a.property = 50;
}

void CObserverMethod(Action action, A a)
{
    if(a.property >= 50)
       a.property = 35;
}
...