Имеет ли смысл отправлять события из другого объекта? - PullRequest
1 голос
/ 07 октября 2009

Я все еще пытаюсь понять, как лучше структурировать потоки событий. Кто-то имел большой смысл, сказав мне, что содержащиеся объекты должны быть отделены от своих родительских контейнеров, чтобы их можно было повторно использовать между контейнерами. Вместо вызова функции своих родителей они отправляют событие. Разумные!

Я недавно сам оказался в неловкой ситуации, когда отправлял событие на содержавшемся объекте от его родителя. Кажется более интуитивно понятным, чтобы объект отправлял свои собственные события. Может быть, я граничу с нарушением закона Деметры?

Пример того, что я делаю:
child.dispatchEvent(new ChildEvent(ChildEvent.IM_BEING_A_CHILD));

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

1 Ответ

6 голосов
/ 07 октября 2009

Вы не обязательно нарушаете какие-либо правила здесь - если dispatchEvent является публичной функцией, то вам разрешено вызывать ее из любого места, которое вам нравится.

Если вы хотите, чтобы все было чище с точки зрения инкапсуляции, вы могли бы вместо этого предоставить явную функцию, которую родитель может вызвать для определенного события, например:

child.doSomeChildAction();

и на дочернем классе:

public function doSomeChildAction():void
{
   dispatchEvent(new ChildEvent(ChildEvent.IM_BEING_A_CHILD));
}

Таким образом, если вам нужно изменить способ, которым дочерний элемент отправляет событие, какой тип события отправляется, или какие действия происходят, когда дочерний элемент отправляет событие, все это инкапсулировано в дочернем классе, и поэтому будет проще управлять .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...