Interface XMLizable et modèle de composant
Tout en découvrant l'architecture et la conception du moteur de promotion, vous allez à plusieurs reprises rencontrer des objets qui implémentent l'interface XMLizable. Il s'agit d'une interface essentielle qui sert de base au modèle de composant que le moteur de promotion emploie.
L'interface XMLizable déclare que les objets des classes qui l'implémentent peuvent être sérialisés en document XML et désérialisés à partir d'un document XML. Ces deux actions sont définies comme méthodes dans l'interface.
CategoryFilter est un exemple d'objet implémentant cette interface. CategoryFilter filtre un ensemble d'articles en ligne (LineItemSet) d'entrée et en renvoie un sous-ensemble, de sorte que tous les éléments de l'ensemble LineItemSet de sortie appartiennent à des catégories autorisées par l'objet de filtre. Le diagramme suivant montre la forme XML d'un filtre de catégories :
Remarques :
- Le nom de la balise lie cet élément XML à une interface d'objet métier.
- Cet attribut indique la classe d'implémentation.
- Le contenu de cet élément XML capture les données de configuration de cette instance de l'objet métier.
Dans ce diagramme, l'élément de filtre indique que l'objet implémente l'interface de filtre et, par conséquent, suit le contrat spécifié par l'interface. Sa classe d'implémentation est la classe CategoryFilter. L'implémentation définit le comportement des objets de cette classe. Le corps de l'élément de filtre indique une catégorie incluse : Store 201 Sweaters (Magasin 201 - Pulls). Le corps de l'élément de filtre est uniquement interprété par le filtre de catégories. Il sait comment réactiver un objet CategoryFilter d'après ce contenu de l'élément de filtre. Le contenu peut être affiché comme configuration de l'objet CategoryFilter.
La combinaison interface - implémentation - élément XML fournit un objet métier avec le contrat d'interaction, le comportement et la configuration associés. Elle forme la base de tous les composants personnalisables du moteur de promotion.
Les objets implémentant l'interface XMLizable doivent proposer un constructeur par défaut public.