para los diálogos de este tipo. Lo defino como una clase anidada de FindFilesCommand. Si el diálogo básico utilizado entre muchos comandos lo defino en un módulo accesible para esos comandos y tengo el comando, configuro el diálogo en consecuencia.
Los objetos de comando son suficientes para mostrar cómo el diálogo está interactuando con el resto del software. En mi propio software, los objetos Command residen en sus propias bibliotecas, por lo que los diálogos están ocultos del resto del sistema.
Hacer algo más elegante es exagerado en mi opinión. Además, tratar de mantenerlo al más alto nivel a menudo implica la creación de muchas interfaces adicionales y métodos de registro. Es una gran cantidad de codificación para obtener poca ganancia.
Al igual que con cualquier marco de esclavitud, la devoción lo llevará por algunas callejuelas extrañas. Debe usar el juicio para ver si hay otras técnicas para usar cuando huele mal el código. De nuevo, en mi opinión, los diálogos deben estar estrechamente vinculados y definidos al lado del comando que los usa. De esa manera, cinco años después puedo volver a esa sección del código y ver todo lo que ese comando está tratando.
De nuevo, en las pocas instancias en que un diálogo es útil para múltiples comandos, lo defino en un módulo común a todos ellos. Sin embargo, en mi software tal vez 1 de cada 20 diálogos es así. La principal excepción es el diálogo de abrir/guardar archivo. Si docenas de comandos utilizan un cuadro de diálogo, yo iría por la ruta completa de definir una interfaz, crear un formulario para implementar esa interfaz y registrar ese formulario.
Si la localización para uso internacional es importante para su aplicación, deberá asegurarse de que cuenta con este esquema, ya que todos los formularios no están en un solo módulo.
He respondido una pregunta muy similar en [esta publicación] (http://stackoverflow.com/a/15512972/385995). –