Was sind die Gründe für die Accessor-Namen von Singleton?

8

Im Laufe einiger Projekte habe ich eine anständige Menge von Klassen-Factory-Methoden geschrieben, um auf Singleton Instanz einer Klasse. Ich habe immer eine Variation der Namenskonvention + (id)sharedSomething; verwendet.

Apple hat dagegen eine Vielzahl von Namenskonventionen. Zum Beispiel:

%Vor%

Gibt es einen Reim oder einen Grund für das Adjektiv, das in den Namen vor dem Nomen steht, auf das ich achten sollte, wenn ich meine eigenen Methoden benenne? Ich dachte ursprünglich, dass es etwas mit "flexiblen" vs "strikten" Singleton Designs zu tun hat, aber NSFileManager und NSNotificationCenter folgen beide der + (id) defaultSomething Konvention, aber NSFileManager unterstützt die Zuweisung von anderen Instanzen, während NSNotificationCenter nicht. Ich bin ratlos.

BEARBEITEN: Ich habe mich geirrt, dass NSNotificationCenter die Instanziierung neuer Zentren nicht unterstützt. Es ist einfach nicht sehr häufig, also ist die ursprüngliche Hypothese nicht notwendigerweise ungültig.

    
Matt Wilding 16.02.2011, 21:42
quelle

3 Antworten

5

Im Allgemeinen sind die shared… -Methoden für echte Singletons (NSApplication, NSWorkspace, etc.), während default… oder standard… eine Klasse bezeichnet, die sinnvoll instanziiert werden kann, wo aber die meisten Kunden nur mit ihr arbeiten eine einzelne globale Instanz. Aber es gibt keinen öffentlichen Standard, und es scheint in erster Linie eine Entscheidung zu sein, die getroffen wurde, wenn eine solche Klasse geschrieben wurde.

    
Chuck 16.02.2011, 23:13
quelle
2

Ich fand diese Position zu dem Thema aus dem Buch iPhone App Entwicklung von Craig Hockenberry:

  

Leider gibt es keinen Standard   zum Benennen von Singletons. Ältere Klassen,   wie diejenigen in der Stiftung, verwenden   das Präfix default für die Methode   Name. Neuere Klassen neigen dazu, zu verwenden    shared als Präfix.

Ich zitiere es als eine Alternative zu der Antwort von @Chuck. Die Zusammenfassung scheint zu sein, dass es kein wirkliches Muster gibt, während Chuck auf eine grobe Korrelation zwischen echten Singletons und Objekten hinweist, die üblicherweise nur als Singletons verwendet werden, und Mr. Hockenberry weist auf eine grobe Korrelation im Alter hin.

    
Matt Wilding 17.02.2011 00:24
quelle
1

Es hat nichts mit "flexiblen" vs "strengen" Singleton Designs zu tun. NSNotificationCenter und NSUserDefaults sind nicht einmal Singletons. Glauben Sie wirklich, dass flexibleSingleNotificationCenter ein besserer Name ist als defaultCenter? Gibt es einen einzigen Weg, der dem Benutzer der Methode hilft zu wissen, wie er implementiert wird?

NSDeteriministicFiniteStateMachineToggleButton irgendjemand?

    
hooleyhoop 16.02.2011 23:00
quelle