Buenas. Quisiera consultar si son o no ciertas las siguientes restricciones:
1. Se debe utilizar el patrón singeton. Más específicamente, los controladores necesariamente deben ser singleton; no pueden implementarse alternativas.
2.1. Todo caso de uso debe invocar (de forma directa) métodos de un único controlador; no puede utilizar varios, o invocar a otro caso de uso.
2.2. La consola debe utilizar de forma directa los controladores que manipulan (también de forma directa) los datos; no pueden haber "varias capas" entre la consola y los datos.
Gracias.
Re: Obligatoreidad de algunos conceptos
Por otra parte, 2.1 y 2.2 son correctos.
Saludos
Re: Obligatoreidad de algunos conceptos
Gracias por la respuesta profe. Me genera la siguiente duda:
* Los controladores en conjunto proveen métodos públicos para modificar cada dato del sistema (relevantes al negocio: usuarios, compras, etc).
* Implementar el patrón singleton implica un método estático del estilo GetInstance.
* Si no se toma ninguna medida extra que restrinja el acceso al namespace de la clase, entonces el controlador es en escencia global, y cualquier objeto (de cualquier tipo, y en cualquier parte del programa) adquiere la capacidad de accederlo mediante su GetInstance, y usar sus métodos para modificar los datos del negocio.
Quisiera saber si mi razonamiento tiene algún error conceptual, porque esto me suena muy problemático.
Saludos.
Re: Obligatoreidad de algunos conceptos
Recomiendo plantear esta duda en la clase de monitoreo.
Saludos
Re: Obligatoreidad de algunos conceptos
Re: Obligatoreidad de algunos conceptos
Saludos
Re: Obligatoreidad de algunos conceptos
Respecto a los controladores que llaman a otros, es cierto, en mi grupo está pasando lo mismo. Tenemos un mismo método repetido en diversos controladores: todos menos uno funcionan como middleman, que invocan a ese uno y retornan sin hacer más. No me queda claro qué ventaja aporta: te permite desacoplar el caso de uso de ese método, al precio de crear un método en otro controlador, y acoplar eso en su lugar (además, la consola ya estaba acoplada al resto de controladores de todos modos, mediante lo demás casos de uso). También creo que ensucia mucho las interfaces: parece incorrecto tener algo como ControladorComentario::ListarUsuarios (si controla comentarios, ¿por qué lista usuarios?).
Planteo estas dudas aquí porque son de índole general. Prefiero no utilizar tiempo del monitoreo con esto, ya que es escaso.
Saludos.
Re: Obligatoreidad de algunos conceptos
Hay diferentes opciones, cada una con ventajas y desventajas. Por ejemplo, depende del criterio que hayan usado para definir las interfaces (una por caso de uso, una por controlador, algo intermedio). Por otra parte, si se utilizan manejadores para las colecciones, en lugar de tenerlas en los controladores, es posible que no se presenten algunos de estos problemas.
Notar que este tema no se evalúa en parciales y exámenes de Programación 4. Posiblemente retomen esto en otros cursos de la carrera, utilizando otros paradigmas y tecnologías de desarrollo.
Saludos