Pregunta

... y la mejor manera de manejar el éxito / fracaso de retroalimentación a la capa de vista.

Las opciones son:

doBusinessLogic(things)

o

for (Thing thing : things) {
  doBusinessLogic(thing)
}

Suponiendo que queremos una capa de vista que recibe retroalimentación de éxito / error de una manera consistente (es decir, desde las operaciones individuales o múltiples en los objetos de valor), ¿cuál es el mejor enfoque?

Aclaración:

Manejo de múltiples tipos de excepciones lanzadas desde una llamada lógica de negocio en la capa de vista es el código pesado y también causa problemas de mantenimiento (se introducen nuevas excepciones que la capa de presentación no sabe nada). Parece que es mejor para la llamada lógica de negocio para controlar los errores en varios objetos de valor y 'paquete' de ellos para el fin de hacer frente de una manera consistente.

¿Fue útil?

Solución

¿Qué tal algo a lo largo de las líneas de su última sugerencia:

for (businessObject : businessObjects) { businessObject.doBusinessLogic() }

La idea es poner la lógica de negocio en un método de objeto de negocio. Su capa de vista lata lazo sobre todos los objetos de negocio, contando cada uno de ellos para hacer sus negocios. Cómo cada uno hace su negocio está en la lógica del objeto de negocio en la capa de negocio. Puede controlar los errores y tal por los valores del método de doBusinessLogic devolver o por lanzar excepciones de sucesos desagradables.

Si usted está haciendo la lógica de negocio a objetos cruz (es decir, la lógica que opera en más de un objeto de negocio individual), tal vez se podría construir una clase businessObjectManager que podría tener métodos que tengan en uno o más objetos de negocio y opera en ellos. De este modo, al poner el objeto del gestor de la capa de negocio, todavía se mantiene toda la lógica de negocio en la capa de negocio.

Otros consejos

En última instancia fui por la primera opción y ha creado un genérico clase de peso ligero "número bulto" que encapsula los éxitos y fracasos de una acción en una colección de objetos. Un éxito o el fracaso está enchavetado al identificador de objeto correspondiente.

A bundlesis poblada dentro de cada llamada lógica de negocio y regresó a la capa de vista. Excepciones lanzadas en el bucle de la lógica de negocio 'realizar la acción para el objeto' son capturados y un fracaso correspondiente añaden al haz resultado (enchavetada al ID de objeto).

La capa de vista tiene un método de ayuda simple que presenta las votaciones contenida en el haz de resultado al usuario.

Esto funciona muy bien.

Creo que el enfoque se toma con esto es lo que se adecue mejor a su sistema.

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