2010-12-02 4 views
0

J'ai un programme qui gère différents objets qui ont leur propre type d'instructions (disons leur propre programme), et d'une classe principale que je veux exécuter ces programmes. Ensuite, j'ai deux choix:Classe unique par rapport à 'static class'

  • Faire un InstructionHandler de classe, créer une instance de celui-ci dans ma classe principale et transmettre des demandes à ce qu'un objet [modèle Singleton - grâce à Mark Peters]
  • Faire une InstructionHandler de classe juste des méthodes statiques et faire usage de ceux-ci dans ma classe principale

Quelle serait la bonne voie à suivre du point de vue de la conception de logiciels?

+2

Votre première méthode utilise ce qu'on appelle le "modèle singleton" –

Répondre

0

Avez-vous envisagé d'utiliser le Interpreter Pattern? Les ensembles d'instructions peuvent-ils être combinés pour chacun des objets afin de créer une sorte de grammaire?

0

Vous êtes bien mieux avec un Singleton. Si jamais vous (pour tester, par exemple) vouliez changer le comportement de votre système, les méthodes statiques interfèrent avec lui. Avec un Singleton, vous pouvez simplement sous-classer et redéfinir la (les) méthode (s) d'intérêt, puis utiliser une instance de la sous-classe à la place de votre instance de classe normale. Aucune substitution n'est possible avec des méthodes statiques.

+0

Ne pouvons-nous pas utiliser des simulacres (EasyMock, JMock) pour tester au lieu de sous-classer? –

+0

Oui. Et oui, certains d'entre eux permettent de se moquer des méthodes statiques. Donc j'ai probablement surestimé l'affaire. Mais pourquoi ne pas concevoir vos classes pour que ces outils ne soient pas nécessaires pour les manipulations de routine? –

Questions connexes