2016-05-25 10 views
0

Die meisten iOS-Apps basieren auf dem MVC-Design-Muster und wir verwenden Singleton-Klassen in unseren Apps seit vielen Jahren. Ich weiß, dass Singleton selbst ein Designmuster ist und viele betrachten es als Anti-Pattern und all die guten schlechten Sachen über Singletons.iOS Singleton-Klasse innerhalb der MVC-Architektur

Aber wenn Sie MVC als eine Gesamtarchitektur für Ihre App-Entwicklung betrachten, würde ich gerne verstehen, wo ein Singleton darin kategorisiert wird. Ist es ein Modell, eine Ansicht oder ein Controller? Wenn ja warum? Wenn es keiner dieser drei gehört, was ist es dann?

Das mag eine dumme Frage scheinen, aber es stört mich, wie mir diese Frage in einem Interview in einer renommierten Firma gestellt wurde.

Antwort

2

MVC ist ein architektonisches Muster, während Singleton ein Designmuster ist. Die beiden Dinge sind nicht miteinander verwandt, und daher ist Singleton in MVC "nichts".

Abgesehen von jeder politischen Diskussion über die Verwendung von Singletons könnten Sie theoretisch entscheiden, jede Model-, View- oder Controller-Klasse zu einem Singleton zu machen.

Wie Gnasher darauf hingewiesen hat, werden ViewControllers innerhalb des iOS SDKs durch die Laufzeit erstellt und zerstört, was bedeutet, dass es unlogisch wäre, Singletons in diesem Kontext zu sein, ungeachtet der Theorie.

Ein wahrscheinlicheres Szenario ist, dass Ihr Modell für mehrere Ansichten verfügbar sein soll. Sie könnten dieses Modell zu einem Singleton machen, auf das über ein Framework zur Abhängigkeitsinjektion oder die Injektion von Konstruktoren zugegriffen werden kann. In diesem Fall ist Ihre Klasse sowohl eine Model-Klasse als auch ein Singleton. Sie schließen sich nicht gegenseitig aus.

Ich frage mich, ob das Ihre Interviewer gemeint haben - wo würden Sie am liebsten Singleton in einer iOS App verwenden? In diesem Fall wäre die richtige Antwort im Modell.

+1

View-Controller werden häufig bei Bedarf erstellt und automatisch freigegeben, wenn sie nicht mehr benötigt werden. Diese Art von View-Controller könnte kein Singleton sein. Wenn Ihr View-Controller ein Singleton wäre, würde ich Ihre Entscheidung in Frage stellen. Auf der anderen Seite wäre für eine Model-Klasse ein Singleton überhaupt nicht ungewöhnlich. – gnasher729

+1

Ich sagte 'in der Theorie', und der Beitrag fragt nach MVC nicht, was mit dem ios-Entwicklungsrahmen möglich ist. Es geht nicht um Best Practice, sondern darum, welcher "Teil" von MVC ein Singleton ist, und das ist keine logische Frage, die man in einem Interview stellen muss. Wenn die Frage tatsächlich lautet: "Wo würden Sie am liebsten einen Singleton in einer iOS-App verwenden?", Dann würde das die Antwort ändern ... Ich werde sie bearbeiten, um sie zu klären. – Toby

Verwandte Themen