2009-01-23 6 views
2

J'ai un problème où j'ai besoin de générer un rapport basé sur Word sur l'objet "Client".Modèle d'objet de transfert de données?

que je fais habituellement cela en passant client à une classe qui sait comment créer un document Word, insérer des signets, etc.

Le problème avec cela, est que je me trouve en plaçant la logique pour la récupération et le formatage des informations sur l'objet Client dans cette classe. Je comprends que c'est mauvais et viole le principe de responsabilité unique. Je pense à propos de créer une autre classe comme "CustomerReportInfo" qui accepte un Custom et a toute la logique concernant le formatage et la récupération des données, ainsi la classe génératrice de Word est petite et les deux peuvent changer indépendamment les uns des autres.

Je me demandais juste ce que cette classe devrait être appelée? J'ai parcouru une liste de modèles et je ne vois vraiment rien qui corresponde à la description. Cela ne ressemble pas à une stratégie, ou un proxy ... Cela ressemble à DTO, mais les DTO sont généralement des classes bêtes sans fonctionnalité, n'est-ce pas?

Des idées sur quel motif cela ressemble?

Répondre

1

Je préfère CustomerView ou CustomerWordView s'il s'agit d'un mot spécifique. Vous abordez le modèle MVC ici, auquel cas le troisième concept est la classe de contrôleur qui charge le client à partir de la base de données (demande de préférence à quelqu'un d'autre de le charger) et construit l'objet de vue.

0

Je l'appellerais

CustomerReportGenerator 

Je sais que cela semble poxy mais il dit ce qu'il fait sans avoir à commenter quoi que ce soit ou,

0

Vous êtes sur la bonne voie, mais pas tout à fait. Au lieu de créer une nouvelle classe responsable des deux récupération des données de l'objet Client et contenant ces données, vous voulez que chaque classe ait vraiment une seule responsabilité. Donc vous créez deux nouvelles classes.

Basé sur this article, il semble que vous voulez une architecture comme celle-ci:

données> Assembleur> DTO> Word Report Générateur

Le Word Report Generator est la classe que vous utilisez actuellement pour générer le rapport. Le DTO est un objet aussi simple que vous pouvez le faire tout en contenant toutes les données dont vous aurez besoin pour votre rapport spécifique. Le Data est votre information sur l'objet client. Ensuite, il existe une classe spéciale Assembler qui contient "la logique de récupération et de mise en forme des informations sur l'objet Customer" et de remplir le DTO avec cette information.

Questions connexes