Аспектно-ориентированное программирование
Сквозная функциональность Ведение журналов Авторизация Модуль оформления заказов Модуль принятия товаров
Проблемы сквозной функциональности Запутанность кода Рассредоточение кода Плохое прослеживание назначения Непригодность для повторного использования Большая вероятность ошибок Трудность в сопровождении
Классы-примеси Шаблоны проектирования Специфичные доменные решения Существующие решения
Основные понятия АОП completeSum = count*price; ….. fireSumUpdated(); …. If(contractId == null) throw new Exception(); joinpointpointcut log.info(…) aspect advice joinpoint
Пример: законодательство Pointcut Военнослужащие Коммерческие организации Joinpoint Физические лица Юридические лица Advice Штраф Арест Aspect Закон
Пример: авторизация joinpoint Доступ разрешен? Да Нет Выполнение операции Сообщение об отсутствии прав advice
Недостатки АОП Отсутствие проработанной методологии Различия в реализациях Тесная связь компонентов и аспектов
Будущее АОП Развитие аспектной декомпозиции Формализация аспектного подхода Анализ применимости АОП к различным областям