Répondre

2

La couche de présentation doit être placée derrière des interfaces qui traitent à la fois la présentation et la réception. La raison principale est que si vous aviez deux interfaces, l'une pour la présentation et l'autre pour la réception, il est possible, en théorie, de se retrouver avec deux objets différents assignés à chacun provoquant l'étrangeté dans le test.

Toutefois, si votre interface se développe en dizaines de méthodes, vous voudrez peut-être prendre du recul et envisager de la diviser en unités plus petites, puis les agréger. Pas nécessairement basé sur la réception et la présentation, mais des divisions plus logiques de votre interface de présentation. Par exemple, vous pouvez avoir une IPresentationUI avec deux variables, l'une est une interface de IPresentationDisplay et l'autre de IPresentationControl. La seule routine d'enregistrement que vous avez accepte un objet IPresentationUI. La classe implémentant la couche Prensentation implémenterait trois interfaces IPresentationUI, IPresentationControl et IPresentationDisplay.

+0

donc le même objet qui présente des données recevrait une nouvelle entrée de l'utilisateur et ensuite l'objet serait passé au domaine? Le domaine décide quoi extraire de l'objet de présentation? Y a-t-il des risques pour la sécurité? – zsharp

+0

L'idée générale est que l'interface est implémentée par un formulaire ou un objet représentant la page Web et est un shell fin qui transmet des événements à un objet UI et reçoit des instructions sur la façon de dessiner/configurer la présentation. L'objet d'interface utilisateur responsable de prendre cette entrée brute et d'exécuter des commandes qui modifient le domaine. Cela inclut de faire toute la sécurité nécessaire. Ce n'est que lorsque la commande est exécutée que le domaine est touché. Donc, si les contrôles de sécurité échouent, n'exécutez pas la commande. –

+0

L'avantage de cette approche est que mettre votre interaction utilisateur derrière une interface vous procure plusieurs avantages. D'abord, vous absentez une grande partie de l'interface utilisateur spécifique. Les normes Web changent donc, les cadres de formulaire changent, mais tant que les nouvelles classes implémentent l'interface, le reste de votre logiciel peut continuer à fonctionner. Le deuxième test devient plus facile car vous pouvez avoir des objets fantaisie implémentant les interfaces d'interface utilisateur. Troisième Vous avez documenté à travers l'interface exactement comment votre logiciel interagit avec une interface utilisateur donnée. –

Questions connexes