Wie kann ich eine Singleton-Klasse in Perl implementieren?

7

Was ist die beste Vorgehensweise für die Implementierung von Singletons in Perl?

    
planetp 22.02.2010, 10:47
quelle

3 Antworten

16

Sie können das Modul Class :: Singleton verwenden.

Eine "Singleton" -Klasse kann auch einfach implementiert werden, indem entweder die Variable my oder state verwendet wird (letztere ist seit Perl 5.10 verfügbar). Aber sehen Sie sich den @ Michaels Kommentar unten an.

%Vor%     
Eugene Yarmash 22.02.2010, 10:52
quelle
9

Wenn du Elch benutzt, dann MooseX :: Singleton . Seine Schnittstelle ist kompatibel mit Class :: Singleton.

    
daxim 22.02.2010 12:33
quelle
2

Singleton Zusammenfassung:

  • Meistens funktioniert ein normales Objekt.
  • Sei vorsichtig mit Singletons.
  • Lokalisieren Sie die Interaktion so gut wie möglich

Während Singletons eine nette Idee sind, tendiere ich dazu, einfach ein normales Objekt zu implementieren und es zu benutzen. Wenn es entscheidend ist, dass ich nur ein solches Objekt habe, werde ich den Konstruktor ändern, um eine fatale Ausnahme zu erzeugen, wenn das zweite Objekt erstellt wird. Die verschiedenen Singleton-Module scheinen nicht viel mehr zu tun, als eine Abhängigkeit hinzuzufügen.

Ich mache das, weil es einfach ist, es funktioniert, und wenn ich in einer seltsamen Zukunft mit einem zweiten Objekt in meiner App arbeiten muss, werden die Änderungen minimiert.

Ich mag es auch, die Interaktion mit meinen "Singleton" -Objekten zu lokalisieren - halte die Interaktion an so wenigen Orten wie möglich. Statt also jedes Objekt direkten Zugriff auf den Singleton zu haben, vermittle ich alle Interaktionen über mein "Application" -Objekt. Wenn möglich, ruft das Anwendungsobjekt Daten aus dem 'Singleton' ab und übergibt sie als Parameter an die Methode in den anderen Objekten. Antworten von anderen Objekten können ebenfalls protokolliert und an den "Singleton" übergeben werden. All diese Bemühungen helfen mir, wenn ich Änderungen am 'Singleton'-Objekt vornehmen muss und wenn ich andere Objekte in einer anderen App wiederverwenden möchte, die das ursprüngliche' Singleton'-Objekt möglicherweise nicht benötigen oder verwenden können.

    
daotoad 22.02.2010 16:53
quelle

Tags und Links