Аспектно-ориентированное программирование: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 192:
Возможность настройки ошибок компиляции можно считать одной из самых дерзких особенностей AspectJ. Предположим, мы хотим изолировать подсистему так, чтобы клиентскому коду пришлось бы использовать некую промежуточную функциональную обвязку вместо прямого обращения к рабочим объектам (такая ситуация имеет место в шаблоне проектирования Facade). Используя синтаксис declare error или declare warning, можно настроить реакцию компилятора ajc на появление точки соединения в коде:
 
<source lang="java">
<pre>public aspect FacadeEnforcement {
pointcut notThruFacade() : within(Client) && call(public * Worker.*(..));
declare error : notThruFacade():
"Clients may not use Worker objects directly.";
}</pre>
}
</source>
 
Pointcut within подобен this() за исключением того, что ajc обнаруживает его только на этапе компиляции (большинство pointcut могут срабатывать на основе информации времени выполнения).