Запуск вызова второго метода при вызове первого метода - PullRequest
0 голосов
/ 13 сентября 2011

Скажем, у вас есть method1, который не содержит явных вызовов method2.

Поддерживают ли какие-либо языки программирования способ вызова метода2, когда метод1 вызывается без какой-либо модификации первого метода? Если да, приведите короткий пример.

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

В « Рефлексивная модель для зависимостей первого класса » автор описывает язык, где такие зависимости могут быть выражены «ортогонально другим задачам приложения» с помощью мета-объектов.Но это был исследовательский прототип.Исследования мета-объектов и мета-объектных протоколов привели к аспектно-ориентированному программированию, которое пробилось в индустрию и которое, вероятно, было бы наиболее реалистичным для использования.

1 голос
/ 13 сентября 2011

Да, AspectJ , для одного.Это будет выглядеть примерно так:

after(): call(void method1()) {
  method2();
}

То есть после вызова method1, выполнить заданный код (который просто вызывает method2. Все это называется advice . Часть call(void method1()) называется pointcut ; pointcut - это набор точек соединения --- определенных мест в вашей программе, где поведение может быть измененоили вводится новое поведение. Связанные точки и советы могут быть сгруппированы в аспекты --- таким образом, в название языка.

Существуют другие аспектно-ориентированные языки с аналогичными возможностями.

...