3 Stimmen

Wie viele Controller-Klassen sind typisch in einer Cocoa-App?

Beim Entwerfen meiner Anwendung, wie viele Controller sollte ich haben? Ist es eine gute Praxis, einen Controller für die gesamte App, das gesamte Fenster oder für jede Klasse zu haben? Außerdem wie viele Objekte werden im Dokumentfenster in Interface Builder zu viele erstellt. Tutorials haben in der Regel einen namens AppController. Haben vollständige Anwendungen typischerweise AppController oder n*xYZController?

4voto

Peter Hosey Punkte 94684

In einer nicht-dokumentbasierten App, eine pro Fenster. Ich spreche nur über Controller, die Sie selbst schreiben, nicht Fenster-Controller, Ansichts-Controller, Objekt-Controller, Array-Controller, Baum-Controller oder Wörterbuch-Controller. (Bitte beachten Sie, dass einige Leute ihren benutzerdefinierten Controller zu einem NSWindowController machen.) Ich zähle auch nicht den App-Delegierten, der Ihre Stammcontroller besitzt.

In einer Einzelfenster-App bedeutet das normalerweise einen benutzerdefinierten Controller.

In einer dokumentbasierten App schreiben Sie im Allgemeinen überhaupt keine Controller, sondern schreiben stattdessen eine oder mehrere NSDocument-Unterklassen - eine pro Dokumententyp. Jedes Dokumentenobjekt besitzt normalerweise genau ein Fenster.

Unabhängig von der Art der App, die Sie schreiben, möchten Sie möglicherweise auch Controller für eventuelle schwebende Hilfsfelder (wie z. B. einen Inspektor) erstellen, obwohl Sie die Alternative in Betracht ziehen sollten: Lassen Sie das Feld sein eigener Controller sein, wie es bei NSFontPanel und NSColorPanel der Fall ist.

1voto

Elise van Looij Punkte 4022

Eins pro Fenster, wie Peter Hosey vorschlägt, ist keine schlechte Strategie, aber das, was für den einen ein Fenster ist, ist für eine andere Frau vielleicht eine Unteransicht. Ich ziehe es vor, in funktionalen Clustern zu denken: Wenn es zwei oder mehr verwandte Dinge gibt, die erledigt werden müssen, brauchen sie vielleicht wirklich einen Controller.

Aber, und das ist entscheidend, du musst in der Lage sein, einen guten Namen für deinen Controller zu finden: importController, textFilesImportController oder externalFilesDisplayController sind Namen, die deutlich machen, was ein bestimmter Controller tun und nicht tun wird.

Wenn du keinen guten Namen für deinen Controller finden kannst, nimm es als Zeichen, dass du ihn entweder nicht brauchst oder deine Entwurfsidee noch nicht klar ist. In diesem Fall kannst du ihn vorübergehend deinen wasauchimmerController nennen, bis dir die nächste Erleuchtung kommt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X