Angenommen, eine Klasse muss eine externe Bibliothek laden, die einige Zeit zum Laden benötigt und daher nur einmal geladen werden sollte. Zwei natürliche Lösungen hierfür wären die Verwendung des Singleton-Musters oder des Monostaten-Musters. Gibt es einen Vorteil für eine dieser Lösungen in diesem speziellen Kontext in Ruby?
Zum Beispiel:
%Vor%Versus:
%Vor%Da die zweite Syntax viel sauberer ist, gibt es irgendwelche Vorteile für die Verwendung des Singleton in Ruby?
Das Singleton-Muster erzwingt strukturell die Tatsache, dass Sie never have more than one instance of a class at a time
haben können, und es ist für die Entwickler offensichtlich, dass es sich um ein Singleton handelt.
Der Monostatus erzwingt das behavior of a singleton without the structure of the monostate
.
Möglicherweise finden Sie Situationen, in denen Sie noch Instanzdaten benötigen. Daher wäre ein Monostatus besser. Sie können die Instanz erstellen, Methoden verwenden, um die Instanzdaten zu beeinflussen, und trotzdem auf die statischen Daten zugreifen. Mit einem Singleton können Sie keine Instanzdaten haben.
Abgesehen davon, wenn Sie vorhaben, Klassen aus dem Singleton abzuleiten, und Sie wollen, dass diese Klassen Singletons sind, ist Ihre bessere Wahl Monostate. Das liegt daran, dass alle von einem Monostatus abgeleiteten Klassen Monostaten sind. Von Klassen abgeleitete Singleton-Klassen sind standardmäßig keine Singletons. Sie müssten die statische Methode und das Attribut jeder abgeleiteten Klasse hinzufügen.
Tags und Links ruby design-patterns singleton oop monostate