Question

Je viens de recevoir une injection de dépendance vraiment émaillée et l’émerveillement du motif de conception Decorator que je m’utilise partout.

Aussi merveilleux soit-il, cependant, une chose qui me pose problème, c’est de nommer mes classes de décorateur, alors je voudrais juste savoir ce que font les autres. Ajoutez-vous toujours le mot décorateur? Intégrez-vous le nom de l'interface dans sa décoration? Ont-ils leur propre espace de noms?

Que faites-vous les gars?

Était-ce utile?

La solution

J'évite d'utiliser des noms de modèles de conception. Je pense que cela appartient à la documentation si nulle part. Nommez la classe / fonction de décorateur d'après ce qu'elle fait ou représente. Le fait qu’il décore, jette un pont, crée des liens, des mandataires ou des représentants représente peu d’importance.

Chaque fois que vous nommez une chaîne, ajoutez-vous un suffixe de chaîne? Cela ressemble à hgrnNotation pour moi et c’est quelque chose que j’essaie d’éviter.

Autres conseils

Prenons un exemple du framework IO de l'API Java. Il utilise beaucoup le motif décoratif mais les noms des classes ne le reflètent pas. Par exemple, BufferedReader peut décorer un FileReader, mais ils portent le nom de leur fonction: lecteurs.

L'ajout de décorator à ce nom poserait d'autres problèmes si vous intégriez également d'autres motifs faisant appel aux mêmes classes, comme c'est souvent le cas. Vous pourriez vous retrouver avec une classe nommée MyDecoratorStrategyComponent.

Appelez ça comme ça.

J'ai un groupe de décorateurs pour une interface IPrinter. Ils s'appellent:

  • PrintDisasterRecovery - Exception manipulation
  • PrintQueuer - En fait un appel asynchrone

Ces deux types héritent de PrintDecorator. Ainsi, si quelqu'un jette un œil sous les couvertures, il peut voir ce qui se passe.

Généralement, lorsque le motif est encapsulé dans un objet (par opposition à une collection d'objets), il est plus simple et plus clair d'inclure le nom du motif dans la classe, dans ce cas, utilisez Decorator comme suffixe. Cela fonctionne bien pour les mandataires, les décorateurs, les usines, les adaptateurs, etc., mais ne fonctionne pas pour les autres modèles dans lesquels un groupe d'objets est nécessaire à la mise en œuvre du modèle, tel qu'un pont (quel objet prendrait le suffixe -bridge?)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top