Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

cheminement pour apprendre les patterns

+3 votes

vous trouverez ici plein de patterns à découvrir.
Y'a t il un enchainement logique ou facile à respecter pour les apprendre ?

demandé 22-Oct-2015 par buffalo974 (2,886 points)

2 Réponses

+4 votes

Non. Les patterns ne sont pas liés les uns aux autres, ils résolvent des problèmes indépendant et complémentaires.

A noter que de nombreux patterns sont implémentés dans le langage et qu'il n'y a donc pas besoin de les écrire : décorator, iterator, singleton, etc.

Les patterns les plus interessants à apprendre en Python IMO : observer, strategy, facade.

répondu 22-Oct-2015 par Sam (4,984 points)

Si un prof sadique demandait à un étudiant de faire un TP qui illustre en un seul
programme, l' intégration des patterns observer, strategy,et facade ?

c'est pas le MVC ça ?
sinon quel pattern ferait quoi dans ce programme ?

Il n'y a pas une réponse unique, mais si vous êtes à l'aise avec ses notions avancées, essayer d' imaginer un truc explicable en quelques lignes. A part le decorator et l' iterator, je ne visualise pas la finalité des patterns sur le lien github.

+2 votes

Hey @buffaloXX ça fait un bail ;)

Cela n'est pas spécifique à un langage de programmation en particulier, mais il y a des gens qui proposent tout de même un ordre :

Day 1

Factory Method
Builder
Composite

Day 2

Prototype
Observer
Facade
Bridge

Day 3

Abstract Factory
Proxy
Chain of responsibility
Visitor

Day 4

Singleton
Command
State
Strategy

Extra:

Adapter
Decorator
Flyweight
Mediator
Iterator
Momento
Template Method
Interpreter

Perso je trouve ça con, un design pattern s'utilise lorsqu'on en a besoin, encore faut-il avoir assez d'xp pour savoir que pour tel problème, le pattern X ou Y existe.

En réalité c'est juste des mecs (plutôt d'un seul mec à la base dans les années ~70, mais formalisé par le gang of Four depuis un bon moment : années ~ 1995 ) qui ont remarqué que beaucoup de gens avaient à peu près des problèmes similaires, donc au lieu que chacun fasse sa petite solution, ils proposent de refactoriser tout ça en proposant un manière de faire assez générique pour que tout le monde puisse l'intégrer à son code sans trop se casser la tête.

Donc, comment peut-il y avoir un ordre alors que ce ne sont que des solutions génériques pour un problème donné ??

répondu 22-Oct-2015 par boblinux (3,092 points)

Belle reponse +1

Ce n'est pas totalement vrai. Certains DP sont l'assemblage de plusieurs patterns (par ex. MVC), et il y a des patterns qui sont liés les uns aux autres (typiquement Container et Iterator).

D'ailleurs, il existe aussi une classification des patterns en fonction de leur but. Je ne suis pas spécialement fan, mais ça peut aider à voir plus clair.

Le fait que j'énonce :

problèmes similaires

couplé avec

manière de faire assez générique

Ne signifie pas que chaque pattern n'en contient pas d'autres, ou ne dépend pas d'autres, ici on parle uniquement en termes de problèmes et de solutions.

On a un problème, des mecs proposent une façon de le résoudre assez générique pour que le fait que tu sois un chintock, un arabe ou encore un indien, vous codez "à peu près" de la même façon. ça facilite beaucoup la lecture du code.

Rien n'empêche qu'un pattern en contienne ou en implique d'autres, comme le MVC, il est clair qu'il est intimement lié au pattern Observer, mais on peut très bien faire du MVC sans l'implémenter explicitement.

ps : Sinon merci pour le lien, il a l'air cool, je penserais à le lire pendant mon TP ;D

Ton enchainement représente peut-être la pente la plus douce pour aborder ces concepts, je garde ça sous le coude ;-).

...