在无状态Bean中具有静态变量实例的Java对象

时间:2015-08-26 03:51:17

标签: ejb java-ee-6

是否可以在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;
        }
    }

1 个答案:

答案 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 ......)都没关系。

相关问题