Je crée des interfaces et des classes abstraites qui représentent un cadre de messagerie pour les messages courts texte comme SMS, email, twitter, xml, etc. et je me demandais où je devrais mettre le code de validation du message. Le fait est que j'écris seulement les superclasses et les interfaces, donc je ne mets pas l'implémentation réelle dedans, je vais juste mettre les hooks dedans qui permettent aux autres de valider le contenu des messages. La façon dont je le vois, je pouvais le faire de plusieurs façons:Où dois-je mettre le code de validation?
dans l'abstrait superclasse « Message », ont une méthode abstraite « isValid ». Une variante de ceci serait d'avoir isValid appelé lorsque le constructeur Message est appelé, en lançant une MalformedMessageException si le message est mal formaté.
Dans la couche de transport, immédiatement avant l'envoi, validez le message. J'aurais une méthode send (Message) qui appelle une méthode isValid (Message) immédiatement avant son envoi.
avoir un validateur de message singleton avec une méthode statique isValid (Message) appelée à un moment donné.
Je suis sûr qu'il y a d'autres options qui me manquent. Actuellement, je penche vers le premier, mais il ne me semble pas juste d'avoir du code de validation dans ce qui devrait être un objet de domaine.
Donc, dites-vous que je devrais compter sur les implémenteurs de ce framework pour valider les messages avant qu'ils ne les créent? Ou dites-vous que je devrais utiliser une variation sur le premier choix, en tirant le code de validation, peut-être dans l'objet MessagingService lui-même? – DLaw
Validez avant de créer. Toujours. Les objets de message doivent être valides. on ne peut pas leur demander s'ils sont valides. Le ne devrait pas exister s'ils sont invalides. –
Votre édition a beaucoup de sens pour moi. Merci! – DLaw