Solo quería que los grupos pensaran sobre cómo manejar los detalles de configuración de las entidades.Configuración de nivel de aplicación en DDD?
Lo que estoy pensando específicamente es la configuración de alto nivel que podría ser modificada por el administrador. el tipo de cosas que puede almacenar en la aplicación o en la web. Definitivamente, en última instancia, desde la perspectiva de DDD debe establecerse en algún lugar de los objetos explícitamente.
Como argumento, tomemos como ejemplo una aplicación de blog o CMS basada en web.
Una entidad de entrada de blog dada tiene cualquier número de configuración de la instancia como autor, contenido, etc.
Pero también puede ser que desee establecer (por ejemplo) la descripción o palabras clave que todas las entradas en el sitio deben empezar por defecto si el autor no los cambia Claro, podrías hacer esas constantes en la clase, pero luego el propietario del sitio no podría cambiar los valores predeterminados.
Así que mis pensamientos son los siguientes:
1) utilizar clase de nivel() propiedades estáticas que representan esos ajustes, y luego los puso cuando la aplicación se inicia, ya sea la que fueron desde la base de datos o desde la Web .config.
o
2) el uso de una entidad separada para la celebración de la configuración, posiblemente, un diccionario, o bien utilizarlo directamente o tienen que ser un miembro de la clase de entrada
Lo que todas las huelgas como la más fácil/flexible? Mi preocupación sobre la primera es que no me parece muy conectable (si termino queriendo agregar más características) ya que cambiar los métodos de clase de una entidad me haría cambiar la aplicación también (lo cual se siente como una violación de OCP)) Sin embargo, el segundo parece ser más pesado, especialmente si luego tengo que emitir o analizar valores del diccionario.
Los valores predeterminados fueron un ejemplo, quizás uno deficiente; Estoy familiarizado con el patrón de fábrica. Otro ejemplo sería algo que debería aplicarse a todas las instancias de una clase, pero que puede cambiar a nivel de la aplicación. Tal vez algo como el número de instancias para cargar en una lista (siempre) o una regla sobre si mostrar o no comentarios. Estos realmente no me parecen valores de instancia, ¿o estoy malinterpretando algo? – Paul
Siempre puede encapsular uno o más valores relacionados en un tipo y luego inyectar una instancia de ese tipo en todos los consumidores. Por razones de eficiencia (o cualquier otra razón) puede optar por inyectar una sola instancia compartida, mientras que los consumidores no tienen idea de la vida útil del objeto inyectado. Eso mantendrá sus opciones abiertas. –