是否可以在EAR中包含一个像Calculator类一样的对象作为其他无状态类的实用程序?
这是一个糟糕的设计吗?如果是这样,应采用何种适当的方法?
@Stateless
class A{
public void sumForA(){
System.out.println("SUM IS : "+ (Calculator.getInstance().add(4+6)));
}
}
@Stateless
class B{
public void sumForB(){
System.out.println("SUM IS : "+(Calculator.getInstance().add(1+2)));
}
}
public class Calculator{
static{
INSTANCE=new Calculator();
}
private static INSTANCE;
public Calculator getInstance(){
return INSTANCE;
}
public int add(int x,int y){
return x+y;
}
}
答案 0 :(得分:0)
首先,没有这样的名称“静态变量实例”,有实例变量和静态变量,你可以在这里找到一个例子:Java Static vs Instance。
其次,关于您的Calculator类,您需要将getInstance()方法标记为静态,因为您直接调用它。并且,您似乎尝试使用单例模式,我建议您看一下这个问题:What is an efficient way to implement a singleton pattern in Java?
第三,在你的例子中,statless bean中没有静态变量,并且使它变得简单:你只是在类计算器中调用具有静态成员的方法。那么为什么不呢?!你在你的方法中使用你的实用程序类,无论是无状态bean还是任何类型的bean(EJB会话bean,CDI / JSF bean,Spring Components ......)都没关系。