Pregunta

Tenemos una interfaz REST dado:

POST /calculation
<data>abc</data>

Este cálculo puede realizarse por diferentes "calculadoras" lógicos en función de la configuración del servidor.

Ahora estamos diseñando la interfaz Java que cada calculadora debe implementar. La interfaz tendrá un método para cada servicio REST.

Dado que todos RESTO (HTTP) y las llamadas no tienen estado, cada método debe ser estática. Sin embargo no se puede definir métodos estáticos en interfaces Java. ¿Hay una buena solución para esta situación?

Se le podría definir como los métodos no estáticos y luego simplemente en primer lugar crear una instancia de la clase del calculador. Apenas se parece más clara para indicar que los métodos son sin estado utilizando la palabra clave estática en la interfaz.

¿Fue útil?

Solución

Me parece que desea una interfaz con los métodos declarados como de costumbre, y una clase que implementa, y luego simplemente crear una instancia de una sola instancia de este. No hay ninguna razón por sí para los propios métodos a ser estática.

Otros consejos

sin estado no significa estática. Sin estado significa que el componente no se basa en el estado. Mejor dicho componente, porque toda la implementación de la interfaz es en realidad sin estado - no tiene ningún variables miembro. Así varias instancias de las clases de implementación son perfectamente bien. Especialmente si usted tiene un contexto para gestionarlos -. Primavera o EJB, por ejemplo,

¿Por qué crees que los métodos debe ser estático? Seguramente podrían ser, pero que limitarían en términos de enchufar una implementación diferente después. Si usted está preocupado por el consumo de memoria o similares, usando un Singleton haría lo mismo como estático para que, como ya se ha dicho en el último párrafo de su pregunta.

Si ninguna de las clases que implementan esta interfaz no tiene que cambiar la aplicación, utilizar static method en la interfaz como método helper.

Usted no necesitará ninguna solución con la versión java 8.

Java 8 soporta métodos estáticos en la interfaz. Echar un vistazo a esta documentación .

métodos estáticos:

  

Además de los métodos por defecto, se pueden definir los métodos estáticos en las interfaces. (A método estático es un método que se asocia con la clase en la que se define más bien que con cualquier objeto. Cada instancia de la clase comparte sus métodos estáticos.)

Esto hace que sea más fácil para usted para organizar los métodos de ayuda en sus bibliotecas; se puede mantener static methods específica a un interface en la misma interface en lugar de en un separate class

Otra solución a su problema está utilizando Singleton como se sugiere en la respuesta aceptada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top