31 votes

Scala et interfaces

En Java I généralement déclarer la totalité de mon domaine en tant que interfaces, éventuellement avec une sorte d' Factory , pour me mettre en œuvre. C'est en partie parce que je suis si vieux, je me souviens plus de quand certaines couches de persistance nécessaire la mise en œuvre des classes à la sous-classe d'une classe spécifique, mais aussi pour que je puisse facilement:

  • les objets fantaisie à des fins de test
  • proxy objets lors de l'exécution si nécessaire
  • fournir des implémentations différentes

J'ai suivi cette pratique même si je n'ai pas vraiment envisager que je vais réellement envie de faire tout de ce qui précède; je crois toujours que c'est une bonne pratique , juste au cas où. Je pense que c'est un assez approche commune.

Serait-ce inhabituel dans Scala-terre si je déclarer tous les objets du domaine abstract? Les points ci-dessus sont pour la Scala ainsi?

31voto

Saem Points 2415

Scala a des traits, qui sont des interfaces sur la fissure. Vraiment, ils sont ce que les interfaces devrait ont été, certes, il y a des limites quand il s'agit pour les constructeurs, mais ce n'est pas vraiment un gros problème en considérant le fait que si vous avez deux interfaces à la fois avoir des exigences du constructeur, vous passerais sur les mêmes problématiques.

Ensuite, il y a des méthodes partielles, et dans beaucoup de façons, beaucoup de bons principes de conception orientée objet basés autour de la gestion de la dépendance pourrait presque être vu comme un moyen d'obtenir des unités de travail qui sont plus composable, vous avez vraiment à merveille. Au lieu de pouvoir travailler sur la méthode des entrées et des sorties, ou des points prédéfinis où une stratégie de l'objet/la méthode employée, vous avez un peu plus de souplesse.

Ajoutez à cela le compagnon des objets et tout d'un coup, usines et un ensemble beaucoup plus beaucoup plus triviale.

Étant donné que c'est le cas, vous ne pouvez vraiment obtenir loin de l'obligation d'utiliser des interfaces de partout, et avec les plus puissants des génériques du système, une partie de ce qui se fait avec les interfaces se fait sucer là-haut.

Généralement à la recherche à la Scala de code, il a tendance à être plutôt décomposé, et les interfaces ne semble pas être le principal outil de que les.

3voto

MarkusQ Points 15612

C'est vraiment une réflexion à la question.

Il ne semble pas être un modèle commun (au moins dans le Scala j'ai vu), mais je ne peux pas désactiver le haut de ma tête de penser à un bon argument contre elle si c'est ce que vous voulez vraiment faire.

D'autre part, je ne pense pas que je voudrais le faire de cette façon (j'avais refactoriser quand j'avais un réel besoin, plutôt que de construire de tels "souplesse" pour un futur hypothétique qui pourrait ne jamais venir). Mais le meilleur argument contre la il est, je pense, l'analogie d'éviter inutile d'indirection (ne pas utiliser un pointeur vers un pointeur vers un pointeur vers un entier lorsque tous vous avez besoin est un entier), et ce n'est pas très convaincante.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X