Затворы - это просто элегантное решение множества проблем. На самом деле, в языках программирования, где нет замыканий, создаются методы для реализации аналогичных функций.
Просто подумайте о функторах в C ++ или Runnables в Java. Это всего лишь методы, которые позволяют выполнять функции, аналогичные замыканиям. Какое-то «ручное закрытие».
Замыкания становятся все более популярными, потому что они интегрированы в популярные языки: Javascript растет благодаря онлайн-приложениям (например, google doc), C # его внедрил, PHP реализовал его с 5.3 и так далее.
Теперь, когда замыкания доступны во все большем количестве технологий, становится довольно просто, что все больше и больше людей интересуются ими.
Итак, что же такое замыкания? Это довольно просто. Закрытие - это функция и контекст для ее выполнения. Это манипулирует как объект. Почему это полезно? Это полезно для привязки вашего собственного кода к существующему коду.
Вот две распространенные ситуации, которые требуют этого: когда действия управляются другим фрагментом кода, например, в многопоточности с пулом потоков, или когда действие должно быть выполнено для выбранного события (часто используется в javascript для пользовательского интерфейса).