Question

Je ne sais pas si le titre reflète bien ce que j'essaie de dire ici.

Lors de la conception en OO, devrais-je diviser mes objets dans leurs zones les plus spécifiques - donc si j'ai un objet d'usine qui traite de la création d'objets mais que plus tard je trouve un moyen de créer des objets dans un autre but, même s'ils peuvent être les mêmes objets, cela vaut-il la peine de créer une usine séparée ou simplement de l'ajouter à l'existant.

Ma plus grande inquiétude est de surcharger les cours avec des tonnes de choses, ou de diviser les objets et de diluer mes projets dans un océan de cours.

De l'aide?

MODIFIER:

Je suppose que sur une note latérale/un sous-sujet, une partie de moi veut connaître le niveau de granularité que vous devez utiliser dans un programme.En quelque sorte, jusqu'où devriez-vous descendre ?

Était-ce utile?

La solution

  

Mon plus grand souci est gonflants des classes avec des tonnes de choses, ou   objets fractionnement et diluer mon   des projets dans une mer de classes

Ceci est un point très valable et tout projet de taille raisonnable même, extrêmement difficile à obtenir à l'avant droit surtout parce que réaliste, eux-mêmes exigences évoluent au fil du temps dans la plupart des cas. C'est là « refactoring » entrent en jeu. Vous concevez en fonction de ce que vous savez à un moment donné et d'essayer faire pas trop trop de sauts de la foi à ce que vous pensez que le système peut évoluer vers.

Étant donné que vous savez ce que vous construisez en ce moment, vous concevez vos classes en essayant de tirer le meilleur parti possible des concepts OO - par exemple l'encapsulation / polymorphisme. Ce lui-même est, comme d'autres l'ont noté aussi bien, peut être notoirement difficile à réaliser et c'est où l'expérience, à la fois dans la conception de systèmes OO, ainsi que la connaissance du domaine peut vraiment être utile.

Conception basée sur ce que vous savez -> Build It -> Votre avis compte -> refactoriser -> Refonte -> et il se poursuit et ..

Autres conseils

Trouver le bon niveau de détail et de la responsabilité est ce qui rend la conception OOP si difficile. Nous pouvons vous aider avec un cas spécifique, mais pas avec tout ce général. S'il y avait des algorithmes ou des méthodes strictes de la façon de résoudre ce problème, tout le monde pourrait être un designer POO.

Une règle générale je comme pour décider « Est-ce trop grand maintenant en venir? » est « puis-je expliquer le but de celui-ci de façon concise? » Si vous commencez à avoir à présenter des mises en garde et beaucoup de mots de belette pour expliquer les fonctions d'un composant de votre conception (que ce soit la classe, variable membre, méthode ou autre), il pourrait être un bon indicateur qu'il devient trop complexe et devrait être divisé .

Dans votre cas spécifique, si vous avez déjà un objet usine alors le principe DRY (Do not Repeat Yourself) dirait que c'est une mauvaise idée de créer une autre usine qui fait la même chose.

Est-ce un problème réel que vous faites face? Ou simplement une crainte sur la façon dont votre code pourrait se développer à l'avenir?

Si vous utilisez le même type d'objet pour résoudre des problèmes radicalement différents, vous devrez peut-être revoir la classe de se concentrer sur des préoccupations seperation. Si vous avez besoin d'une réponse plus précise, vous devrez fournir un exemple d'un type de classe qui aurait besoin de cette fonctionnalité.


  

Je pourrais avoir mal formulé les choses   la Q. Je suppose que je ne serais pas répéter   moi est juste plus d'un cas de   où mettre le code, il pourrait être   ajouté à une usine exsiting que   crée des objets design pour exporing   données à des feuilles de calcul Excel. Sur le   D'autre part, je pouvais le voir pourrait aussi   avoir sa propre usine d'importation   données Excel. Les deux usines seraient   produire les mêmes objets, mais l'intérieur   fonctionnement sont complètement différents. -

Si vous ne faites pas ou prévoyez faire une abstraction de classe (ou sous-classement à l'aide d'interfaces) vous ne pouvez pas avoir besoin d'utiliser le modèle d'usine du tout. Le modèle d'usine est généralement mieux adapté pour fournir des objets d'un type de classe de base ou que la mise en œuvre d'une interface spécifique.

Les deux usines produiraient les mêmes objets, mais le fonctionnement interne est complètement différent.

Je ne sais pas si je vous ai bien compris, mais cela ressemble à un candidat au poste de Usine abstraite modèle.

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