28 votos

Singleton para la Configuración de la Aplicación

Hola En todos mis proyectos hasta ahora, yo lo uso para utilizar el patrón singleton para acceder a la configuración de la Aplicación en toda la aplicación. Últimamente veo muchos artículos de tomar acerca de no utilizar el patrón singleton , debido a que este patrón no promover de capacidad de prueba también se esconde el Componente de dependencia. Mi pregunta es ¿cuál es la mejor manera de almacenar la configuración de la Aplicación, que es fácilmente accesible a través de la aplicación sin la necesidad de pasar de la configuración de objetos de todas partes de la aplicación ?.

Gracias de Antemano

Madhu

22voto

tvanfosson Puntos 268301

Creo que una configuración de la aplicación es una excelente uso del patrón Singleton. Yo tiendo a usar a mí mismo, para evitar tener que volver a leer la configuración cada vez que quiero acceder a ella y porque me gusta tener la configuración que ser inflexible (he.e, no han de convertir a los no-valores de cadena cada vez). Yo por lo general se basa en algunos backdoor métodos para mi Singleton para apoyar la capacidad de prueba, es decir, la capacidad de inyectar un XML de configuración para que yo pueda poner en mi prueba y la capacidad para destruir el Singleton de modo que se vuelve a crear cuando sea necesario. Normalmente, estos son los métodos privados que puedo acceder a través de la reflexión, de modo que están ocultos de la interfaz pública.

EDITAR vivimos y aprender. Mientras pienso en la configuración de la aplicación es uno de los pocos lugares donde el uso de un Singleton, no lo hago más. Típicamente, ahora, voy a crear una interfaz y una clase estándar utilizando la implementación estática, Lazy<T> campos de copia de seguridad para la configuración de propiedades. Esto me permite tener la "inicializar una vez que" el comportamiento de cada propiedad con un mejor diseño de la capacidad de prueba.

6voto

ColinD Puntos 48573

El uso de inyección de dependencias para inyectar el único objeto de configuración en cualquiera de las clases que necesitan. De esta manera puede utilizar un simulacro de configuración para la prueba, o lo que quieras... no está explícitamente salir y conseguir algo que necesita ser inicializado con los archivos de configuración. Con la inyección de dependencia, que no están pasando el objeto alrededor.

1voto

OscarRyz Puntos 82553

Para esa situación específica me gustaría crear un objeto de configuración y pasar todo a aquellos que la necesitan.

Ya que es la configuración que debe ser utilizado sólo en ciertas partes de la aplicación y no necesariamente debe de ser Omnipresente.

Sin embargo, si usted no ha tenido problema con ellos, y no quieren probar que duro, usted debe seguir adelante como lo hizo hasta el día de hoy.

Leer la discusión acerca de por qué son considerados perjudiciales. Creo que la mayoría de los problemas vienen cuando una gran cantidad de recursos están siendo llevadas a cabo por el singleton.

Para la aplicación de configuración, creo que sería seguro para mantener las cosas como son.

0voto

Protagonist Puntos 373

El patrón singleton parece ser el camino a seguir. He aquí un Setting clase que escribí que funciona bien para mí.

0voto

ruslander Puntos 1209

Aquí hay un ejemplo que hace uso de Castale.Core >> DictionaryAdapter y StructureMap

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X