Имя шаблона для запуска событий на элементе объекта, предоставленном при создании экземпляра? - PullRequest
0 голосов
/ 01 мая 2018

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

Это анти-паттерн? Если да, есть ли у него имя?

Есть ли причина кодировать таким образом?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Передача вызываемого объекта в конструктор обычно используется для внедрения зависимостей типа «внедрение конструктора». Смотри: https://en.wikipedia.org/wiki/Dependency_injection#Constructor_injection

При таком использовании это превосходный рисунок ...

Но если передаваемый объект действительно является прослушивателем событий, тогда это становится плохой идеей. Внедрение прослушивателя событий не является «внедрением зависимостей», поскольку объект не зависит от своих прослушивателей событий, и поэтому он не должен требовать его в своем конструкторе. Также было бы очень плохой формой ограничить объект, генерирующий события, чтобы у него мог быть только один слушатель.

0 голосов
/ 03 мая 2018

Это анти-паттерн?

нет

Нет

у него есть имя?

Да: функция обратного вызова

Есть ли причина кодировать таким образом?

Конечно, см .: Как объяснить обратные вызовы на простом английском языке?

Обратите внимание, что конструктор также является методом. В передаче обратного вызова конструктору нет ничего другого по сравнению с любым другим методом.

...