Uso de fábricas en presentadores en un presentador de vista de modelo y proyecto de diseño impulsado por dominio

StackOverflow https://stackoverflow.com/questions/422440

Pregunta

En el diseño controlado por dominio, parece ser una buena práctica usar Fábricas para crear sus objetos de dominio en su capa de dominio (en lugar de usar un constructor directo o IoC).

Pero, ¿qué pasa con el uso de las fábricas de objetos de dominio en una capa de presentador? Por ejemplo, supongamos que estaba creando un objeto de dominio a partir de una entrada de usuario obtenida del presentador.

Este es un ejemplo, digamos que tengo un objeto de dominio de configuración que tiene una cantidad de configuraciones decimales.

Configuración de clase pública: PersistantObject {

 public decimal temperature {get;set;}

 ...(times 20)

 public decimal gravity {get;set;}

}

Para crear este objeto en la capa de dominio, en lugar de la capa de presentador, tendría que pasar cada uno de estos valores decimales como parámetros de función. Creación de una función y definición de función poco exigentes.

es decir, ConfigurationService.CreateConfiguration (temperatura, ... (x20), gravedad);

La solución quizás mejor sería crear el objeto de configuración en la capa del presentador y asignar todos los valores del objeto de configuración directamente desde la entrada del usuario, omitiendo una llamada de función larga.

Configuration config = ConfigurationFactory.CreateNewConfiguration ();

config.temperature = temperature;

.. (x20) .. = ...;

config.gravity = gravedad;

ConfigurationService.SaveNewConfiguration (config);

Pero me pregunto si este enfoque es incorrecto y por qué? Si estos dos enfoques son incorrectos, ¿cuál es el mejor enfoque para crear un objeto largo a partir de las aportaciones de los usuarios y por qué?

¡Gracias!

¿Fue útil?

Solución

No recomendaría que los objetos de dominio salgan de la capa de dominio y entren en la capa de presentación. Mantenga la capa de presentación enfocada en la presentación.

Por este motivo, construyo Objetos de Transferencia de Datos para mezclar datos hacia y desde las capas de dominio y presentación. En su caso, haga que el diálogo llene un DTO que se pase a su servicio y se traduzca al objeto de dominio correspondiente.

Sin embargo, no desearía construir objetos de dominio a partir de DTO cada vez. Considere el caso en el que un DTO representa solo un subconjunto de un objeto de dominio . La reconstrucción de un objeto de dominio existente a partir de tal DTO le daría un objeto de dominio parcial. Probablemente quieras mantener una caché liviana que contenga el objeto de dominio completo para poder realizar una actualización adecuada.

Esencialmente, llegaría a la solución DTO si aplicara el Presente el objeto de parámetro refactorización.

Otros consejos

Hay dos formas principales de manejar esto

1) Si esto se configura a través de un diálogo, crearía clases implementando el patrón de comando y enlazaría un diálogo con el objeto en cuestión. Por ejemplo, CmdCreateConfigurationService y CmdEditConfigurationService.

CmdCreateConfigurationService se basaría en una clase de fábrica y los parámetros mínimos que necesita para seleccionar el Servicio de configuración correcto.

Configura una interfaz IConfigurationServiceEditor y la pasa como uno de los parámetros a CmdEditConfiguration Parameters. Con la interfaz IConfigurationServiceEditor, puede definir tantos métodos como sea necesario para que la transferencia de información desde y hacia el diálogo sea lo más fácil e indolora posible. Recomiendo el uso de una colección de claves y valores. El Objeto de comando sabe cómo configurar el Servicio de configuración de esta colección. El Diálogo sabe que espera esta colección al configurar.

Independientemente de la estructura de datos, realizará el trabajo de completar el Servicio de configuración en el objeto de comando. Al no tener que implementar un objeto de diálogo / formulario / pantalla, IConfigurationServiceEditor puede automatizar sus pruebas y, en determinadas circunstancias, facilitar la configuración de objetos complejos.

Desarrollé este método para un software de CAD / CAM que tiene varias docenas de formas paramétricas, cada una de las cuales tiene de 4 a 40 entradas.

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