Estoy haciendo un programa que utiliza un par de constantes. En un primer momento, cada vez que tenía que utilizar una constante, me lo definen comoSingletons y constantes
//C#
private static readonly int MyConstant = xxx;
//Java
private static final int MyConstant = xxx;
en la clase en la que se iba a necesitar. Después de un tiempo, comencé a darme cuenta de que algunas constantes serían necesarias en más de una clase.
En este momento, yo tenía 3: Oferta de
- definirlos en las diferentes clases que lo necesitaban. Esto lleva a la repetición. Si por alguna razón más tarde tengo que cambiar uno de ellos, tendría que verificar en todas las clases para reemplazarlos en todas partes.
- Para definir una clase/singleton estático con todas las constantes como públicas.
- Si necesitaba una constante en X claseA, ClassB y ClassC, sólo podría definirlo en claseA como pública, y luego tener ClassB y ClassC se refieren a ellos. Esta solución no me parece tan buena ya que introduce aún más dependencias ya que las clases ya las tienen.
terminé implementar mi código con la segunda opción. ¿Es esa la mejor alternativa? Siento que probablemente me esté perdiendo alguna otra alternativa mejor.
Lo que me preocupa de usar el producto único aquí es que no es en absoluto claro para un usuario de la clase que esta clase está utilizando el singleton. ¿Tal vez podría crear una ConstantsClass que tuviera todas las constantes necesarias y luego pasarla en el constructor a las clases que la necesitarían?
Gracias
editar: Estoy usando este sobre todo para este tipo de complejos, no Ints y cuerdas. Al menos en el caso de C# que hace la diferencia, ya que significa que no puedo usar la palabra clave const
.
Si estuviera en un singleton, no se declararían como estáticos, por supuesto. Simplemente se declararían estáticos si estuvieran en una clase estática o dentro de cada clase que lo necesitaría. –
Entonces esos valores ya no son ** constantes **. No, olvida la idea de singleton. – BalusC