41 votes

Modèles de conception pour les langages hybrides fonctionnels-OO?

Il y a déjà toute la collection des meilleures pratiques pour les langues comme le Scala?

J'ai trouvé un travail sur les modèles de conception pour les langages fonctionnels, les modèles de Conception fonctionnelle, de la programmation stratégique. Il y a GoF modèles de conception pour les langages à objets. Mais existe-il des modèles fonctionnels-OO hybrides? Tout ce que j'ai vu, c'est cette liste. Ce qui est connu?

19voto

Sandor Murakozi Points 2549

Deux modèles de Bill Venners, je pense que les deux sont très souvent utilisées dans ScalaTest:

Empilable Trait (d'une structure similaire à la décoratrice modèle, sauf qu'il comporte des éléments de décoration pour le but de la composition de classe au lieu de composition d'objet):
http://www.artima.com/scalazine/articles/stackable_trait_pattern.html

Désintéressé Trait (permet à la bibliothèque de designers afin de fournir des services à leurs clients la possibilité d'accéder soit par le biais de mixin ou importations):
http://www.artima.com/scalazine/articles/selfless_trait_pattern.html

Type de coffre-fort constructeur:
http://blog.rafaelferreira.net/2008/07/type-safe-builder-pattern-in-scala.html

Indépendamment Extensible Solutions au Problème de l'Expression, tout comme la "Évolutive Composant Abstraction" ce n'est pas un modèle de catalogue, mais traite également des problèmes similaires (par exemple, le modèle Visiteur)
http://www.scala-lang.org/docu/files/IC_TECH_REPORT_200433.pdf

Déconseiller le Modèle Observateur - une alternative à l'Observateur
http://infoscience.epfl.ch/record/148043/files/DeprecatingObserversTR2010.pdf

On peut aussi considérer la scala émulation de Haskell des classes de type d'un modèle de conception. Première description (que j'ai pu trouver au moins) est en Pauvre Homme les Classes de Type
http://lampwww.epfl.ch/~odersky/talks/wg2.8-boston06.pdf
Tout à fait quelques entrées de blog sont également disponibles dans cette rubrique.

Et je pense que je ne suis pas complètement tort, si je mentionne aussi les différents monades, vous pouvez trouver beaucoup de ressources de traiter avec eux.

12voto

VonC Points 414372

Bien que pas directement un modèle de conception de catalogue lui-même, le document "Évolutif Composant Abstractions" (Martin Odersky; Matthias Zenger) examine trois blocs de construction pour les composants réutilisables:

  • type abstrait membres,
  • explicite selftypes, et
  • modulaire composition mixin.

Et il reprend plusieurs modèle de conception (publish/subscribe, sujet/observateur, Contexte/Composant) pour illustrer et comprendre ce que les constructions de langage sont indispensables pour réaliser des systèmes évolutifs et dynamiques des composants.

5voto

Don Mackenzie Points 3639

Un modèle fréquemment observé, qui nécessite un nom, est la création d’abstractions de contrôle avec des listes de paramètres et des paramètres par nom.

 def command(expr: T)(block: => Unit) {...}
 

cédant

 command (expr) {
  block
}
 

4voto

Dave Griffith Points 12923

En autant que n'importe quel Objet-langage Fonctionnel est rapidement va acquérir un acteur de la bibliothèque, un grand nombre d'acteurs des motifs probablement se qualifier pour cette question. Presque tous les modèles de Bob Martin Enterprise Integration Patterns est recastable en termes d'acteurs, avec des motifs comme programme d'Équilibrage de Charge, Filtre de Messages, de Contenu Basé sur le Routeur, et le Contenu Enricher être particulièrement commune dans les systèmes de architecturé autour d'grossiers acteurs.

3voto

luis.espinal Points 4145

Étroitement liés, vous pouvez explorer les structures de données définies dans purement fonctionnelle (ou hybride fonctionnelle) des langues. Pour l'un, la capacité de traiter les fonctions des valeurs de première classe faire certains modèles (comme visiteur, méthode de modèle ou décorateur) inutiles dans certains (pas tous) des contextes. Deuxièmement, les structures de données (et les algorithmes qui fonctionnent sur eux) sont soit les installations de plomberie pour les modèles de conception, ou de certains types de problèmes que les modèles de conception de tenter de les résoudre, voir l'article de Wikipédia Purement fonctionnelle.

Mieux encore, je vous renvoie à Okasaki thèse purement fonctionnelle des structures de données.

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