Обратные вызовы на самом деле не являются «шаблоном» - они больше похожи на строительный блок. Ряд банд из четырех шаблонов проектирования используют виртуальные методы в стиле обратного вызова. Джастин Нисснер уже упомянул Наблюдатель .
Обратные вызовы намного старше, чем ООП (и, вероятно, старше, чем 3GL и даже на ассемблере). Другая старая идея - блок параметров - интерпретация C представляет собой структуру, полную связанных элементов, которые должны быть переданы в функцию, чтобы функция не нуждалась в огромном списке параметров.
Классы ООП основаны на блоке параметров (и добавляют к нему философию). Сам экземпляр класса является блоком параметров, передаваемым ссылкой на его методы. Виртуальная таблица - это блок параметров обработки отправки. Каждый виртуальный метод имеет указатель обратного вызова в блоке параметров диспетчеризации. Чистый виртуальный метод резервирует место для указателя обратного вызова в блоке параметров и обещает предоставить фактический указатель позже.
Поскольку класс является строительным блоком для объектно-ориентированных шаблонов проектирования, а блоки параметров и обратные вызовы являются строительными блоками классов - хорошо, вы можете утверждать, что все шаблоны проектирования ООП построены на основе этих идей.
Я бы хотел сказать «блоки параметров и обратные вызовы, а также правила стиля, определяющие их использование, вдохновленную ориентацию объекта», но, как бы это ни звучало привлекательно, я не знаю, правда ли это.