我们有一个给定的REST接口:
POST /calculation
<data>abc</data>根据服务器配置的不同,这种计算可以由不同的逻辑“计算器”实现。
我们现在正在设计每个计算器必须实现的Java接口。该接口将为每个REST服务提供一个方法。
假设所有的REST (和HTTP)调用都是无状态的,那么每个方法都应该是静态的。但是,您不能在Java接口中定义静态方法。对于这种情况,有没有好的解决办法?
我们可以将这些方法定义为非静态的,然后只需先创建计算器类的一个实例。通过在接口中使用static关键字来指示方法是无状态的似乎更清晰。
发布于 2009-11-13 02:58:22
在我看来,您需要一个方法声明为正常的接口,以及一个实现类,然后简单地实例化它的一个实例。这些方法本身没有理由是静态的。
发布于 2009-11-13 03:03:58
无状态并不意味着静态。无状态意味着组件不依赖于状态。我之所以说组件,是因为接口的整个实现实际上是无状态的--它不会有任何成员变量。所以实现类的多个实例是完全可以的。尤其是如果您有一个上下文来管理它们--例如Spring或EJB。
发布于 2009-11-13 02:53:58
为什么你认为这些方法应该是静态的?它们当然可能是,但这会限制您以后插入不同的实现。如果您关心内存消耗之类的问题,那么使用单例对您来说与静态一样,正如您在问题的最后一段中所说的那样。
https://stackoverflow.com/questions/1724502
复制相似问题