Я хотел бы использовать события для связи между моими объектами в среде закрытия Google (GC).
Предположим, у меня есть два класса foobar.Boss
и foobar.Employee
. Босс хочет знать, когда Сотрудник приготовил кофе и был ли этот кофе без кофеина (на этой неделе он отказывается от кофеина).
GC сделал доступными классы, которые, кажется, предоставляют средства для этого, goog.events.Event
и goog.events.EventTarget
.
Не зная лучше, я бы подумал, что это будет работать так:
foobar.Employee.prototype.makeCoffee = function(isDecaf)
{
this.coffeeMaker.putCoffeeInMachine(isDecaf);
this.coffeeMaker.start();
var event = new goog.event.Event('COFFEE_ON', { isDecaf: isDecaf });
goog.events.dispatchEvent(event);
}
foobar.Boss.prototype.addEmployee = function(employee)
{
...
goog.events.listen(employee, 'COFFEE_ON', function(e)
{
if (e.target.isDecaf)
{
this.refillMug();
}
}, false, this);
...
}
Это правильный образец? Меня смущает класс goog.events.EventTarget
- как цель отправляет события? Разве с целью что-то не происходит?
Этот вопрос полезен, но хотелось бы получить более прямой ответ.