Frage

Ich arbeite an persönlichem Projekt, das im Grunde ein Code-Editor ist. Stellen Sie sich vor Standard-Dateimenü mit Menüpunkten Neu, Öffnen, Speichern, Speichern unter, Alle speichern, Schließen, Alle schließen.

Ich bin mit dem richtigen Design stecken. Zur Zeit habe ich:

  • Eine Dokumentenklasse, die ein Dokument darstellt, -. Code Bearbeitung Kontrolle, entsprechende Registerkarte in Tab-Leiste und verschiedene Eigenschaften wie Beschriftung, Dateiname, IsModified etc
  • A Dokumente Klasse, die alle geöffneten Dokumente darstellt. Enthält Methoden wie Neu, Öffnen (Filename), ...

Das Problem ist, dass ich nicht herausfinden können, welche Klasse / Menübefehl für welche Aufgaben zuständig ist.

Zum Beispiel mit File-> New Menübefehl ist einfach -. Anruf Documents.New und das ist es

Aber was für File-> Open? Die Documents.Open Methode erwartet Dateinamen als Parameter. Also, bevor Sie diese Methode aufrufen Ich brauche einen Dateiauswahldialog zu öffnen, lassen Sie Benutzer Dateien auswählen und für jede Datei Aufruf Documents.Open (Filename). Wo ist der beste Platz für diese Unterstützung Code ist, in Menübefehl, umschreiben Documents.Open und legte es dort?

Das gleiche mit Speicher Aktionen. Welches ist für das Speichern verantwortlich? Ist es Dokumente Klasse, die Document.Editor.SaveToFile (Filename) oder besser erstellen Save-Methode in Document-Klasse verwendet? Irgendwo in der Mitte auch Benutzer müssen fragen, ob er will aktuelles Dokument ...

speichern

Ich bin fest. Irgendwelche Ideen?

Edited:. Die Programmiersprache ist Delphi

War es hilfreich?

Lösung

IMHO, den Sie hinzufügen, zu viele Aufgaben auf Ihre Dokumente Klasse. Die alleinige Verantwortung der Dokumente Klasse sollte die Sammlung von Dokumenten mit einigen verwandten Funktion zu halten (z.B. behandeln mehrere Instanzen von demselben Dokument, zu überprüfen, ob alle Dokumente geschlossen sind, Kinder zählen, usw.)

Öffnen eines Dokuments oder sogar ein neues Dokument zu erstellen (zum Beispiel was passiert, wenn Sie ein Format auswählen müssen) sind getrennte Vorgänge, die letztlich in einem neuen Dokument führen, die dann in die Dokumente Klasse hinzugefügt wird. Meiner Meinung nach sollte man nicht einmal mit der Dokumentenklasse interagieren, bis Sie auf der Hand über das Document-Objekt bereit sind.

Ich hoffe, dass Sie einige Klassen haben die Benutzeroberfläche für die Darstellung und Interaktion mit dem Benutzer, alle Informationen zu erhalten, die zum Erstellen oder eine Datei zu öffnen. Sie sollten alles von dort behandeln. Ansonsten sind Sie Ihr Modell mit UI verwandten Themen tainting.

Andere Tipps

Sie benötigen ein Singleton-Objekt (Documentmanager), die alle Dokumentoperationen verwaltet. Dies wird sich Funktionen wie:

  • Get (idlist)
  • GETNEW
  • Speichern (DocList)
  • Aktualisieren
  • etc ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top