2008-10-20 15 views
6

Solía ​​tener una clase de preferencias personalizadas para mis aplicaciones. Para mi próximo proyecto de pasatiempo, quería cambiar a la API de preferencias. Pero las funciones de poner y recibir requieren un valor predeterminado y no quiero extender los valores predeterminados en todos los archivos de origen. Aunque mi proyecto es pequeño, no puedo imaginar cambiar los valores predeterminados en todo el código fuente. ¿Cómo usan la api? Estoy pensando en incluir la API de preferencias en otra clase, pero ¿qué sentido tiene usar la API porque solo elimina la carga de guardar el archivo en el disco, que no es tan difícil con la serialización? ¿Me estoy perdiendo el punto?API de preferencias encapsuladas de Java

Respuesta

1

¿Sería tan difícil colocar todos sus valores predeterminados en una sola clase para que no ensuciaran su código?

He usado commons configuration en proyectos recientes. He investigado la API de Preferencias de Java, pero me gusta la flexibilidad del proyecto de Commons. ¡Y no tiene que especificar valores predeterminados!

2

Aquí está mezclando algunos conceptos. El valor predeterminado dado en el código debe ser específico para la situación local como un "valor predeterminado razonable". Si desea tener valores predeterminados en toda la aplicación, necesita un proveedor de preferencias que le permita enganchar tanto las preferencias predeterminadas como las preferencias del usuario superpuestas. Algo que puede ser un proyecto valioso en sí mismo.

Ah, y los "valores predeterminados razonables" son una gran manera de evitar la configuración cuando no es necesaria, pero permiten que el usuario o el empaquetador proporcionen mejores valores cuando sea necesario.

@comment, creo que entiendo.

Por "situación local" me refiero en el contexto del código. Para su GUI, necesita un valor para mostrar que represente lo que sea que esté usando el hilo. Por lo tanto, usaría algo como Worker.DEFAULT_TIMEOUT. Su trabajador usaría el mismo valor internamente que el predeterminado. De esta forma, recuperará el valor configurado o el predeterminado del trabajador cuando configure el comportamiento del trabajador.

1

Puede poner valores predeterminados en el archivo .preferences que empaqueta en su archivo .jar (o en clase especializada o interfaz con constantes).

Lo uso para cosas como posiciones/tamaños de ventanas, recordando la carpeta predeterminada para elegir archivos, los últimos archivos abiertos y trivialidades. Puedo pensar en algunas cosas interesantes que obtienes "de forma gratuita" con API de preferencias:

  • haciendo las cosas en modo recomendado por el sistema operativo; Es posible que el sistema operativo no permita escribir "archivos de configuración" en la carpeta de la aplicación, y a los usuarios no les gusta que se les pregunte dónde guardar la configuración en el disco y no desea implementar su lógica personalizada para cada plataforma
  • sus datos se guardan para cada usuario del sistema operativo separado
  • una forma de mantener los datos del usuario, incluso si se desinstala la aplicación (o durante una actualización)
  • no necesita base de datos o el acceso al sistema de archivos

Además, no me gusta la serialización y no lo recomiendo para esto. La serialización significa que debe tener cuidado al cambiar sus clases en nuevas versiones de su aplicación.

Cuestiones relacionadas