Аспектно
ориентированное программирование.
Хорошая статья
на хабре, доступно и достаточно подробно
обьясняющая «зачем это надо» и «как это
делается».
В реальной
жизни есть очень много нюансов во
взаимодействии объектов, которые трудно
представить в ООП: очередность выполнения
взаимосвязанных действий у разных
объектов, временная логика явлений,
необходимость выполнять дополнительные
действия при выполнении конкретного
действия с объектом. В жизни это
описывается в виде советов и рекомендаций:
«мойте руки перед едой», «чистите зубы
после еды», «перед выходом из дома —
отключите свет» и других. Эти действия
непросто описать с помощью методов:
нужно использовать различные декораторы
для классов, либо явно вносить логику
взаимодействия в сам метод объекта. И
в том, и в другом случае эти правила
нельзя удобно формализовать в виде кода
с помощью стандартных средств — и это
приводит к усложнению системы и к более
тесному связыванию компонентов.
Как можно
решить данную проблему?
Решение этой
проблемы было изобретено давно —
дополнить существующую модель ООП
некоторым расширением, которое позволит
описывать такие взаимодействия формально.
Было проведено исследование группой
инженеров Xerox PARC, в результате которого
они предложили новую парадигму -
аспектно-ориентированное программирование.
Суть идеи проста — позволить программе
взглянуть на себя «со стороны» с помощью
механизма рефлексии и при надобности
— провести изменение конечного кода.
Имея возможность изменять конечный
код, АОП получает неограниченный доступ
к созданию хуков в любом месте кода и к
расширению этого кода с помощью советов.
В качестве
ликбеза — статья обязательна к прочтению.
Комментариев нет:
Отправить комментарий