разработать шаблон так, чтобы статический метод init всегда вызывался перед вызовом статического метода - PullRequest
2 голосов
/ 18 апреля 2011

У меня есть требование, в котором я должен вызвать некоторый метод инициализации перед вызовом любого статического метода в классе.

Теперь проблема в том, что всякий раз, когда я добавляю новый статический метод в этот класс, я забываю вызывать этот метод инициализации, мне было интересно, есть ли какой-нибудь шаблон проектирования для решения этой проблемы. Я хочу, чтобы метод инициализации всегда вызывался всякий раз, когда статический метод вызывается из класса.

Ответы [ 3 ]

0 голосов
/ 18 апреля 2011

Java имеет статические блоки инициализации .Как то так:

public class SomeClass {
   static {
      // Your code here
   }
}
0 голосов
/ 18 апреля 2011

AOP может быть излишним для этой проблемы. Вы можете попробовать делегировать каждый из статических методов другому классу и добавить код инициализации в конструктор этого класса. Что-то вроде:

class StaticClass {
    public static void m1 () {
      new Worker().m1();
    }
    public static void m2 () {
      new Worker().m2();
    }
}

class Worker {
   public Worker() {
     intialize();
   }
   public void m1() {
     // Real m1 work
   }
   public void m2() {
     // Real m2 work
   }
}

Это по крайней мере решает проблему забвения вызова кода инициализации.

Тем не менее, это выглядит так: https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem

Можете ли вы сделать шаг назад и сказать нам, зачем вам это нужно?

0 голосов
/ 18 апреля 2011

Что-то вроде Spring AOP хорошо решает эту ситуацию для Java. Он использует аннотации AspectJ , чтобы сделать вещи немного проще, хотя лично я считаю, что АОП довольно сложен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...