Laden...

Trennung von Modell und Controller bei Prozessverwaltung (Entwurfsfrage)

Erstellt von IgG vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.296 Views
I
IgG Themenstarter:in
111 Beiträge seit 2006
vor 16 Jahren
Trennung von Modell und Controller bei Prozessverwaltung (Entwurfsfrage)

Ich habe mal eine grundlegende Entwurfsfrage für eine Anwendung mit folgenden Merkmalen:

  • Anzeige verschiedener Dateien (Excel-Doks, ein paar EXE-Dateien)
  • Benutzer kann drauf klicken und dann wird der verlnüpfte Defaultprozess bzw. die Anwendung gestartet

Das klappt auch alles wunderbar, aber beim Entwurf grüble ich noch etwas.

Instinktiv hätte ich eine Klasse ("Runable") geschrieben:


class Runable{
	string filename;
	public string Filename {
		get { return this.filename; }
		set { this.filename = value; }
	}
	
	public void Run() {
		Process.Start(this.filename);
	}
}

(das ist jetzt stark vereinfach)

Beim Erzeugen der GUI hätte ich dann das OnClick-Event mit der jeweiligen instance.Run() Methode verknüpft.

Was mir daran aber nicht behabt: Die View greift dann direkt auf das Modell zu und veranlasst die Ausführung.

Vielleicht bin ich auch auf dem Holzweg und MVC ist die das beste Vorgehen für die .NET Sprachwelt?

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo IgG,

Die View greift dann direkt auf das Modell zu

das ist das normale und vollkommen ok. Das View muss und wird immer auf das Modell zugreifen. Nur andersherum wäre es ein Problem. Das Modell sollte nie auf das View zugreifen. Es sollte das View nicht mal kennen.

herbivore

O
778 Beiträge seit 2007
vor 16 Jahren

Ich würd dir auch dringend empfehlen, Run() als virtual zu markieren, dann kannst du in abgeleiteten Klassen vielleicht noch andere schoene Dinge mit den Dateien machen als Diagnostics.Process.Start

I
IgG Themenstarter:in
111 Beiträge seit 2006
vor 16 Jahren

Original von herbivore

Die View greift dann direkt auf das Modell zu
das ist das normale und vollkommen ok. Das View muss und wird immer auf das Modell zugreifen. Nur andersherum wäre es ein Problem. Das Modell sollte nie auf das View zugreifen. Es sollte das View nicht mal kennen.

Aber das Starten eines Prozesses, wie das Modell es in diesem Fall tut, wäre doch eher die Aufgabe einer Controllerklasse?

D
368 Beiträge seit 2005
vor 16 Jahren

Sicherlich ist beides in diesem Fall OK, persönlich würde ich aber sicherlich auch einen Controller haben der die Datei aufruft. Ich mag es einfach wenn Views austauschbar sind, aber es kommt immer auf den Kontext an.

Gruß

dragi