设计模式,以便在调用静态方法之前始终调用静态init方法

时间:2011-04-18 03:30:50

标签: c# java design-patterns

我有要求,在调用类中的任何静态方法之前,我必须调用一些初始化方法。

现在的问题是每当我向该类添加新的静态方法时,我忘记调用该初始化方法,我想知道是否有任何设计模式来解决这个问题。我希望无论何时从类中调用静态方法,都会调用初始化方法。

3 个答案:

答案 0 :(得分:0)

Spring AOP之类的东西很好地解决了Java的这种情况。它使用AspectJ annotations使事情变得更简单,但我个人认为AOP相当复杂。

答案 1 :(得分:0)

Java has static initialization blocks。像这样:

public class SomeClass {
   static {
      // Your code here
   }
}

答案 2 :(得分:0)

对于这个问题,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
   }
}

这至少解决了忘记调用init代码的问题。

那就是说:https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem

你能退一步告诉我们你为什么需要这个吗?