Responsabilité unique Principe: Dois-je séparer ma classe bibliographie dans Reader, Writer et classe conteneur?

StackOverflow https://stackoverflow.com/questions/1068646

Question

codeur de cow-boy a besoin de l'aide de SO-vétérans:

J'ai une application donnée qui utilise une bibliographie qui est lu à partir d'un fichier (en réalité, il peut être différents fichiers, mais supposons un seul fichier).

Je construis une nouvelle application qui devrait utiliser la bibliographie de la même manière que l'application, donc je copié la classe selon (s).

Après quelques jours Je suis en cours d'exécution% - les choses | ...

Le problème était le suivant:

Dans la classe Bibliographie il y a un code à lire, écrire et garder la bibliographie. Mon travail aurait été beaucoup plus facile quand il y aurait eu une classe pour lire la bibliographie et une classe de conteneur qui maintient toutes les valeurs. Je ne veux pas écrire ou modifier la bibliographie, il suffit de lire et conserver les valeurs.

Alors que je me trompe dans mon idée qu'il serait préférable de segmenter la classe bibliographie en BibliographyReader, BibliographyWriter et une classe Bibliographie (Container)?

P.S .: Quelqu'un pourrait-il s'il vous plaît créer un tag « codeur de cow-boy », « codage cow-boy » ou quelque chose de similaire? Je manque vraiment cette balise;)

Était-ce utile?

La solution

J'aime l'approche de la séparation des classes « conteneurs » de lecture / écriture / getter et ainsi de suite, de préférence définie par une interface. La recherche pour « modèle de stratégie » et vous trouverez plus d'informations à ce sujet.

Une approche simple serait d'avoir la classe accepte un Bibliography dans son constructeur IBibliographyReader, puis une classe implémente cette interface. Lors de la création d'une classe que vous passez une <=> instance de la mise en œuvre du lecteur concret à lui.

Autres conseils

Je diviser les responsabilités suivantes: -

  • Bibliographie: contient les données relatives à la bibliographie. Il recevra ces données dans son constructeur ou via setters
  • BibliographyFileStreamReader: responsable de la lecture de la bibliographie (donné un flux de fichier). Il renvoie une instance Bibliographie

Vous pouvez également ajouter un BibliographyFileStreamWritter.

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