2009-04-17 4 views
1

Je souhaite créer une fabrique qui créera une connexion XMPPC. L'usine doit renvoyer le XMPPConnection réel ou un NullObject si la connexion n'a pas pu être établie. Cependant, XMPPConnection de smack est une classe concrète.Création d'une fabrique pour laquelle il est possible de prendre en charge à la fois un objet réel et un objet Null

Il n'implémente aucune interface, donc je ne peux pas utiliser l'API java dynamic proxy pour proxy le meunier. Je pourrais étendre le XMPPConnection mais ce n'est pas très élégant.

Y a-t-il d'autres options? Notez que l'usine ne doit jamais retourner une valeur nulle!

Répondre

3

Vous devrez créer votre propre interface qui duplique fondamentalement la connexion XMPPC et créer une carte qui implémente cette interface et enveloppe la véritable classe XMPPConnection. De cette façon, vous pourriez avoir une connexion NullXMPPC ainsi.

+0

C'est une idée géniale. Cela en vaut-il la peine ? Je pourrais juste abandonner l'usine et faire une nouvelle XMPPConnection à chaque fois. –

+0

Si vous ne faites que créer cette connexion à un endroit, cela ne vaut probablement pas la peine, mais si vous l'utilisez partout, je dirais oui. Vous pouvez également ajouter des charges de motifs de conception à votre CV :) – willcodejavaforfood

+0

Je compte 3 endroits où j'ai besoin d'un XMPPConnection. Notez que je travaille dans un environnement GUICE. Donc, l'usine m'aide à injecter les connexions à différentes classes. –

Questions connexes