Pregunta

Estoy trabajando en un proyecto personal que es básicamente un editor de código. Imagínese menú Archivo de serie con elementos de menú Nuevo, Abrir, Guardar, Guardar como, guarde todos, Cerrar, Cerrar todo.

tengo que cargar con un diseño adecuado. Actualmente tengo:

  • Una clase de documento que representa un documento -. El control de edición de código, correspondiente pestaña en la barra de pestañas y diversas propiedades, como su título, nombre de archivo, etc IsModified
  • Una clase de documentos que representa todos los documentos abiertos. Contiene métodos como Nuevo, Abrir (nombre del archivo), ...

El problema es que no puedo entender qué clase de comandos / menú es responsable de qué tareas.

Por ejemplo, con Archivo-> Nuevo comando de menú es simple -. Documents.New llamada y eso es todo

Pero lo que para Archivo-> Abrir? Las Espera método Documents.Open nombre de archivo como un parámetro. Así que antes de llamar a este método que necesito para abrir un diálogo de selección de archivos, archivos de dejar que seleccione el usuario y para cada llamada Documents.Open archivo (nombre del archivo). ¿Dónde es el mejor lugar para este código de apoyo, en el comando de menú, reescribir Documents.Open y lo puso allí?

Lo mismo con Save acciones. El cual es responsable de salvar? Es documentos de la clase que utiliza Document.Editor.SaveToFile (nombre del archivo) o mejor crean Guardar método en la clase de documento? En algún lugar en el medio también tienen que pedir usuario si quiere salvar documento actual ...

estoy atascado. Algunas ideas?

Editado:. El lenguaje de programación Delphi es

¿Fue útil?

Solución

En mi humilde opinión, va a agregar demasiadas responsabilidades a su clase de documentos. La única responsabilidad de la clase de documentos debe ser mantener la colección de documentos con alguna característica relacionada (por ejemplo, manejar múltiples instancias del mismo documento, compruebe si todos los documentos están cerradas, el recuento de los niños, etc.)

La apertura de un documento o incluso la creación de un nuevo documento (por ejemplo, ¿qué pasa si usted tiene que escoger un formato) son operaciones separadas que en última instancia resultan en un nuevo documento que se añade a continuación a la clase de documentos. En mi opinión no debería incluso interactuando con la clase de documentos hasta que esté listo para entregar el objeto de documento.

espero que usted tiene cierta clase de representación de la interfaz de usuario y para interactuar con el usuario para obtener toda la información necesaria para crear o abrir un archivo. Usted debe manejar todo desde allí. De lo contrario, usted está manchando su modelo con cosas relacionadas interfaz de usuario.

Otros consejos

Se necesita un objeto Singleton (DocumentManager) que gestiona todas las operaciones de documentos. Esto tendrá como funciones:

  • Get (idList)
  • GetNew
  • Guardar (Lista de documentos de)
  • Actualizar
  • etc ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top