Задача: нужно при активации услуги продлять жизнь объявления.
Как не писать одинаковый код в каждом обработчике активации?
Примеры возможного аспектно-ориентированного кода на разных языках.
Код на перле рабочий с библиотекой Aspect, на остальных языках просто возможные варианты.
Первый вариант использует простые обёртки - перед вызовом AdvertService.activate() навешивает обёртку на метод .save() отдельного объявления, которая уже его продляет. Второй вариант комбинирует два среза: вызов AbstractAdvert.save() и нахождение в потоке управления AdvertService.activate(), и накладывает обработчик на комбинированный срез.
Интересно как недостаточный синтаксис и семантика разных языков делают подобные операции неуклюжими.
P.S. Другой вариант - использование событий, но он более многословный.