Así que estoy implementando una GUI svg-editor-like en una aplicación que estoy trabajando aquí. Estos son algunos ejemplos de la lógica que sería necesaria en él:Consejos arquitectónicos sobre la implementación de la lógica de GUI
- Si el usuario hace clic con el botón derecho sobre el lienzo, un nuevo nodo debe ser creado, y de los siguientes debe ser "unido" con una línea , formando un polígono
- Si el usuario hace clic con el botón izquierdo en un nodo, que se debe mover todo el conjunto de polígonos de acuerdo a la posición del ratón
- el usuario es capaz de eliminar nodos
- nodos seleccionados debe ser de color de manera diferente
- El usuario puede seleccionar varios nodos mediante pressi ng MAYÚS y hacer clic en los nodos
Y así sucesivamente.
que ya haya implementado todos estos elementos, pero no me gustó el resultado final, sobre todo porque tenía que utilizar una gran cantidad de banderas para manipular los estados (ratón hace clic en el botón izquierdo & & & & no se mueve? Hacer esto), y seguramente este código podría ser más elegante. Así que he investigado un poco y llegué a estas opciones:
patrón de Pipeline: me gustaría crear clases que se ocuparía de cada evento lógico separado, y utilizar un orden de prioridad para proporcionar qué hacer/lo haría ser entregados primero, y cómo el evento se propagaría a los artículos posteriores de Pipeline.
MVC: esta es la respuesta más común, pero la forma en que podría usarla para hacer que el código esté más limpio es muy borrosa para mí en este momento.
Estado de la máquina: Eso estaría bien, pero la gestión de la granularidad de la máquina de estados sería complicado
Así que estoy pidiendo al S. O. gurús en consejos sobre cómo construir un código mejor y más feliz.
Entonces, ¿está diciendo que debería usar un gasoducto como dijo en su pregunta? – jgauffin
Estaba sugiriendo algo nuevo. (Creo) dijo que deseaba usar una tubería para capturar y canalizar los eventos, que luego se encadena a los manejadores de sucesos posteriores hasta que el manejador final se ocupa del evento. Me concentré en las operaciones que se realizan en lugar de los eventos que las desencadenan. Sin embargo, si el OP aclarara su idea principal, podría comparar/contrastar un poco más. Espero que OP responda para ver su opinión sobre esto. – tcarvin
+1 para la sugerencia y la aclaración – jgauffin