Le glorifié variable globale - devient une glorieuse global de la classe. Certains disent que la rupture de la Conception Orientée Objet.
Donnez-moi des scénarios, autre que le bon vieux bûcheron où il est logique d'utiliser le singleton.
Le glorifié variable globale - devient une glorieuse global de la classe. Certains disent que la rupture de la Conception Orientée Objet.
Donnez-moi des scénarios, autre que le bon vieux bûcheron où il est logique d'utiliser le singleton.
Dans ma quête de la vérité, j'ai découvert qu'il y a en fait très peu de "acceptables" les raisons d'utiliser un Singleton.
L'une des raisons qui a tendance à monter, encore et encore sur les internets, c'est que d'un "enregistrement" de la classe (qui, vous l'avez mentionné). Dans ce cas, un Singleton peut être utilisé au lieu d'une seule instance d'une classe, car une classe de log doit généralement être utilisé encore et encore ad nauseam par chaque classe dans un projet. Si chaque classe utilise cette classe de log, l'injection de dépendance devient lourd.
La journalisation est un exemple spécifique d'une "acceptable" Singleton, car il n'affecte pas l'exécution de votre code. Désactiver la journalisation, l'exécution de code reste le même. Activer, de même de même. Misko met de la façon suivante à Cause de Singletons, "Les flux d'informations ici un sens: à Partir de votre application dans l'enregistreur. Même si les enregistreurs sont l'état global, depuis pas de flux d'informations à partir de bûcherons dans votre application, les bûcherons sont acceptables."
Je suis sûr qu'il ya d'autres raisons valables. Alex Miller,"les Modèles que je Déteste", parle de service locators côté client et l'INTERFACE utilisateur est également peut-être "acceptable" des choix.
Lire plus sur le Singleton je vous aime, mais vous êtes en m'amenant vers le bas.
Un Singleton candidat doit satisfaire à trois exigences:
Si votre proposition de Singleton n'a qu'un seul ou deux de ces exigences, un remaniement est presque toujours la bonne option.
Par exemple, un spouleur d'imprimante est peu susceptible d'être appelée à partir de plus d'un endroit (le menu d'Impression), de sorte que vous pouvez utiliser les mutex à résoudre simultanément le problème d'accès.
Un simple enregistreur est l'exemple le plus évident d'un peut-être-valide Singleton, mais cela peut changer avec le plus complexe modes de journalisation.
Vous utilisez un singleton si vous devez gérer une ressource partagée. Par exemple, un spouleur d'imprimante. Votre application ne devrait avoir qu'une seule instance du spouleur afin d'éviter des conflits de demande pour la même ressource.
Ou une connexion de base de données ou un gestionnaire de fichiers etc.
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.