我有要求,其中,我必须在调用类中的任何静态方法之前调用一些初始化方法。设计模式,以便在调用静态方法之前始终调用静态init方法
现在的问题是,每当我向该类添加新的静态方法,我忘记调用初始化方法,我想知道是否有任何设计模式来解决这个问题。我希望初始化方法总是在类中调用静态方法时调用。
我有要求,其中,我必须在调用类中的任何静态方法之前调用一些初始化方法。设计模式,以便在调用静态方法之前始终调用静态init方法
现在的问题是,每当我向该类添加新的静态方法,我忘记调用初始化方法,我想知道是否有任何设计模式来解决这个问题。我希望初始化方法总是在类中调用静态方法时调用。
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
}
}
这atleast解决了忘记投入到init代码的问题。
也就是说,这看起来像:https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem
你能退一步,告诉我们你为什么需要这个?
类似于Spring AOP的东西可以很好地解决Java的这种情况。它使用AspectJ annotations使事情变得更简单,虽然我个人认为AOP相当复杂。
Java has static initialization blocks。像这样的:
public class SomeClass {
static {
// Your code here
}
}
静态构造函数将被调用一次,我想每次调用构造函数时调用该方法。 – Gainster 2011-04-18 03:42:39
然后你可能想要AspectJ(http://www.eclipse.org/aspectj/)的一些东西,尽管我不知道它是否可以用于静态方法。 – 2011-04-18 03:44:10