Question

Penser à éviter la réplication de code, j'ai une question qui me surprend à chaque fois que je commence à développer un nouveau système:

Disons que nous avons un système où j'ai un client, il faut CRUD dans un dépôt et le montrer comme une ressource dans un webservice.

La réflexion sur les classes liées au client, nous aurions (D'accord, je ne pourrai jamais utiliser ces noms pour de vrai):

  • CustomerEntity, ce qui représente l'entité utilisée pour faire la logique du système;
  • CustomerRepositoryEntity, représentant la ligne de la table où elle sera stockée;
  • CustomerXMLEntity, ce qui représente le noeud XML du client ';

Il semble que je vais avoir trois entités et tous les attributs du client sera dans chaque classe. Je me demandais si n'est pas là un moyen ou un modèle pour consolider ces trois classes à l'intérieur de la même entité, appelée simplement « Client ».

De cette façon, chaque fois que je dois créer une nouvelle représentation du « Client » (par exemple, si je veux le représenter comme un élément JSON), je ne pas besoin de créer une nouvelle classe pour elle. Je sais que c'est une question très particulière, mais je me demandais si elle ne pouvait pas être plus facile (et plus beau) que ce que je fais maintenant.

Était-ce utile?

La solution

En supposant que vous utilisez les mêmes langues dans vos applications différentes ...

Construire une classe proxy, et une classe de back-end.

La classe backend passe à proximité de vos données, et existe uniquement pour servir les données à votre proxy.

Votre proxy fonctionne sur tout client et prend l'emplacement du point d'extrémité de back-end en tant que paramètre d'initialisation. Quand un get / set est appelé sur votre objet proxy, il gère votre validation et des règles métier, les mains alors la demande à votre classe de back-end, qui gère les détails de mise en œuvre de la persistance de vos données.

Vous auriez deux couches d'abstraction: une pour la persistance des données, et une des règles d'affaires

.
>>>>>  Nathan
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top