1966 votes

Différence entre statique de la classe et le pattern singleton?

Quelle est la réalité (c'est à dire la pratique de différence entre une classe statique et un singleton?

Les deux peuvent être invoquées sans instanciation, à la fois fournir seulement avec une "instance" et n'est pas thread-safe. Est-il d'autres différences?

1374voto

Jon Skeet Points 692016

Ce qui vous fait dire que ce soit un singleton ou une méthode statique n'est pas thread-safe? Généralement, les deux doivent être mis en œuvre pour être thread-safe.

La grande différence entre un singleton et un tas de méthodes statiques, c'est que les singletons peuvent implémenter des interfaces (ou dériver de utile les classes de base, même si c'est moins fréquent IME), de sorte que vous pouvez passer à travers le singleton comme si c'était "juste un autre" la mise en œuvre.

520voto

Kieran Senior Points 6053

La vraie réponse est par Jon Skeet, sur un autre forum, ici.

Un singleton permet l'accès à un seul créé à l'instance l'instance (ou plutôt, une référence à l'instance) peut être passé en paramètre à d'autres méthodes et traités comme un normal objet.

Une classe statique permet seulement statique des méthodes.

391voto

Vadluri Sreenu Points 993
  1. Objet Singleton magasins dans le Tas mais, objet statique dans les magasins de la pile
  2. Nous pouvons cloner l'objet de Singleton mais, on ne peut pas cloner le statique de la classe de l'objet
  3. Classe Singleton suivez la OOP(orientée objet principes), mais pas statique de la classe
  4. nous pouvons mettre en œuvre l'interface avec classe Singleton, mais pas avec la classe Statique.

182voto

neil.johnson Points 369

Le pattern Singleton a plusieurs avantages sur les classes statiques. Tout d'abord, un singleton peut étendre des classes et de mettre en œuvre des interfaces, tandis qu'une classe statique ne peut pas (il peut étendre des classes, mais il n'a pas hérité de leur membres de l'instance). Un singleton peut être initialisé paresseusement ou asynchrone tandis qu'une classe statique est généralement initialisé lors de son chargement, ce qui pourrait chargeur de classe de problèmes. Cependant, l'avantage le plus important, cependant, est que les singletons peuvent être traitées polymorphically sans forcer ses utilisateurs à supposer qu'il existe une seule instance.

54voto

Morendil Points 3112

Une classe statique est celui qui a seulement des méthodes statiques, pour qui un meilleur terme serait de "fonctions". Le style de conception incarnée dans une classe statique est purement procédurale.

Singleton, d'autre part, est un modèle spécifique à OO design. Il est une instance d'un objet (avec toutes les possibilités inhérentes à qui, comme le polymorphisme), avec une création d'une procédure qui garantit qu'il n'existe qu'une seule instance de ce rôle particulier sur toute sa durée de vie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X