Domanda

Sto lavorando su progetto personale che è fondamentalmente un editor di codice. Immaginate menu File di serie con le voci di menu Nuovo, Apri, Salva, Salva con nome, salvare tutti, Close, Chiudi tutto.

mi sono bloccato con una corretta progettazione. Attualmente ho:

  • Una classe documento che rappresenta un documento - controllo per modificare il codice, rispettiva aletta nella barra delle schede e varie proprietà come didascalia, nome file, IsModified etc
  • . Classe
  • A Documents che rappresenta tutti i documenti aperti. Contiene metodi come New, Open (nome del file), ...

Il problema è che non riesco a capire quale comando di classe / menu è responsabile per quali compiti.

Per esempio, con File-> Nuovo comando di menu è semplice -. Chiamare Documents.New e il gioco è fatto

Ma ciò che per File-> Open? Il metodo Documents.Open si aspetta il nome del file come parametro. Quindi, prima di chiamare questo metodo che ho bisogno di aprire una finestra di selezione file, lasciate all'utente di selezionare i file e per ogni file chiamata Documents.Open (nome file). Dove è il posto migliore per questo codice di supporto, nel comando di menu, riscrivere Documents.Open e metterlo lì?

Lo stesso con le azioni Save. Che è responsabile per il salvataggio? E 'Documenti classe che utilizza Document.Editor.SaveToFile (nome del file) o meglio creare Salva metodo nella classe Document? Da qualche parte in mezzo anche bisogno di chiedere all'utente se vuole salvare il documento corrente ...

Sono bloccato. Tutte le idee?

A cura:. Il linguaggio di programmazione è Delphi

È stato utile?

Soluzione

IMHO, si stanno aggiungendo troppe responsabilità alla classe Documenti. La responsabilità della classe documenti dovrebbe essere quello di mantenere la raccolta di documenti con una certa funzionalità correlata (ad esempio, gestire istanze multiple dello stesso documento, verificare che tutti i documenti sono chiusi, contare i bambini, ecc.)

L'apertura di un documento o addirittura la creazione di un nuovo documento (ad esempio, cosa succede se si deve scegliere un formato) sono operazioni separate che alla fine si traducono in un nuovo documento che viene poi aggiunto alla classe Documenti. A mio parere non si dovrebbe nemmeno essere interagisce con la classe dei documenti fino a quando non si è pronti a consegnare l'oggetto del documento.

Spero di avere un po 'di classe per rappresentare l'interfaccia utente e per l'interazione con l'utente per ottenere tutte le informazioni necessarie per creare o aprire un file. Si dovrebbe gestire tutto da lì. In caso contrario, si sta sporcando il modello con cose relative UI.

Altri suggerimenti

Hai bisogno di un oggetto Singleton (DocumentManager) che gestisce tutte le operazioni di documenti. Questo avrà funzioni come:

  • Get (idlist)
  • GetNew
  • Salva (Elenco documenti)
  • Aggiorna
  • ecc ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top