J'ai seulement entendu parler de "modèle de conception" utilisé pour le code orienté objet, et les modèles GoF n'incluent que les modèles de conception POO, mais les modèles de conception sont des solutions élégantes pour les problèmes de programmation courants, n'est-ce pas? Il n'y a rien dans cela qui dit qu'ils doivent être limités à la POO, n'est-ce pas?
J'aimerais voir quelques exemples de modèles de conception en dehors du domaine de la programmation orientée objet. Avez-vous des? Existe-t-il une telle réalité (aucun livre, comme le livre de GoF, ne doit nécessairement avoir été écrit, il convient simplement de l'utiliser, c'est suffisant)?
Ils peuvent être spécifiques à certains langages de programmation, mais les modèles généraux (au niveau du paradigme) sont préférés, autres que ceux orientés objet.
la source
Réponses:
Jetez un coup d'œil à la série Linux Kernel Design Patterns. Les articles sont en relation avec un langage non orienté objet (C) et je crois qu’ils sont bien écrits:
la source
En fait, c’est un paradoxe: l’un des modèles les plus populaires de non-OO est ... "Classe".
Parce que OO a été inventé dans des langages non-OO, les développeurs ont dû le simuler (et ils le font même maintenant), de sorte que le modèle est né. LISP et C en sont des exemples.
Mais suivez mon conseil: ne commettez pas d'erreur commune - n'utilisez pas de modèles uniquement parce que c'est cool , vous avez besoin de raisons sérieuses pour justifier l'utilisation de modèles (au moins ceux d'origine).
Prenez le modèle de commande par exemple - bien que ce soit agréable et qu'il sépare l'appelant du destinataire, il ne devrait pas être utilisé sauf si vous en avez réellement besoin - car les opérations doivent être exprimées à l'aide de verbes - ce qui signifie méthodes. Et en utilisant toutes les commandes, vous vous retrouveriez avec un groupe de lambda OO complètement décentralisés -> il en serait de même pour beaucoup de stratégies.
la source
"Modèle de conception" est en réalité un euphémisme pour "solution de contournement". Les modèles de conception ont été inventés pour contourner les lacunes et les défauts des langages OO . Par exemple, prenons le modèle itérateur qui a finalement conduit à l’introduction des collections en Java. Groovy s'est débarrassé de beaucoup plus de modèles en les convertissant en fonctionnalités de langage: vous n'avez plus besoin du modèle décorateur, car vous pouvez ajouter des méthodes aux classes existantes dans Groovy.
Cela signifie que vous pouvez trouver des modèles de conception partout. En fait, chaque "meilleure pratique" peut être considérée comme une forme simple de modèle de conception.
la source
LtU mentionne que Jeremy Gibbons est en train d'écrire un livre sur les modèles de programmation fonctionnelle. Jetez un œil à quelques-uns des blogs de M. Gibbon, Patterns in Functional Programming . Notez qu'il recommande de lire ses messages du plus ancien au plus récent.
Son article intitulé Modèles de conception en tant que programmes génériques d'ordre de données d'ordre supérieur (pdf) modélise de manière fonctionnelle le modèle de Gang of Four: Composite, Itérateur, Visiteur et Constructeur. Il décrit les modèles de programmation avec des équations récursives dans la programmation en origami (plis et dépliés).
la source
Il existe des modèles de conception SQL .
Et certains modèles de conception fonctionnels existent également - voir ici scala.
la source
Au lieu de nommer des modèles de design non-oo, j'aimerais vous donner quelques exemples de livres comportant de nombreux modèles (certains d'entre eux seront toujours spécifiques à OO):
J'espère que cela t'aides
la source
Dans la programmation fonctionnelle (en particulier Haskell), il existe de nombreux modèles et idiomes qui ne correspondent pas très bien à la POO. Les types fantômes sont un exemple bien connu, et vous pouvez en trouver beaucoup plus sur la page wiki haskell sur Idioms .
la source
La programmation modulaire est très populaire dans les bibliothèques numériques et les applications lourdes en mathématiques (les logiciels numériques sont notoirement difficiles à modéliser à l'aide des modèles orientés objet, principalement parce qu'il y a très peu de choses à encapsuler).
la source
Mon catalogue de modèles favori absolu est un bon exemple de modèles hors-POO: Modèles d'organisation du développement logiciel agile, par James O. Coplien . Ce livre ne traite pas des modèles de logiciels, c’est des gens, un catalogue pour la création d’équipes performantes. Chaque manager devrait lire ce livre!
la source
J'aime penser aux strucutres de données telles que les files d'attente, les listes liées, les arbres, les graphiques, etc. en tant que modèles. Ils définissent certains modèles pour stocker des données et les traiter. Ils peuvent sembler primitifs par rapport aux modèles plus haut de gamme de Gang of Four, mais ce sont néanmoins des modèles. Je veux dire, que se passerait-il si quelqu'un implémentait une pile en tant que FIFO au lieu d'un LIFO et inversement pour une file d'attente et les nommait autrement?
la source