SlideShare une entreprise Scribd logo
REFACTORING VERS
LES DESIGN
PATTERNS
Améliorer son
architecture
par les design
patterns
 Design est non-déterministe
 Ce n’est pas un processus répétable qui garanti un résultat
prédictible
 Les techniques de design sont guidé par des heuristiques
 Intuitive
 Plusieurs facteurs l’influence
 Le design est un processus itératif
 Processus à évolution lente
 Compromis et priorités
 Principe d’essais et erreurs
LES DÉFIS DU DESIGN
 Abstraction claire
 Designer de façon modulaire
 Favoriser une forte cohésion
 Séparation des préoccupations
 Designer en strate ou en oignons
 Limiter le nombre d’abstractions par niveau
 Distribution des responsabilités balancée
 S’inspirer des objets de la vie
 Limitation du couplage
 Garder le minimum d’interconnections
 Rendre les contrats explicites
 Encapsuler les détails d’implémentation
LES HEURISTIQUES FONDAMENTALES
 Choix de solutions simples
 Pas de partie en trop (utiliser le TDD)
 Éviter les défaillances
 Design pour la testabilité
 Identification des zones à haut risque de changement
 Extensibilité, Plugins, IOC, DI
 Utilisation de solutions éprouvées
 Design Patterns
LES HEURISTIQUES FONDAMENTALES
Contexte
DESIGN PATTERNS(PATRONS DE CONCEPTION)
Problèmes
connus
Bonnes
pratiques
Solutions
éprouvées
Creational
•Factory Method
•Abstract Factory
•Prototype
•Singleton
Structural
•Adapter
•Adapter
•Bridge
•Composite
•Decorator
•Facade
•Proxy
Behavioral
•Interpreter
•Template
Method
•Chain of
responsibility
•Command
•Iterator
•Mediator
•Memento
•Flyweight
•Observer
•State
•Strategy
•Visitor
LES DESIGN PATTERNS
Class
Object
DemoÉTAT INITIAL
PROBLÈME
Extensibilité
Dans ce patron une famille d'algorithmes sont encapsulés de
manière à être interchangeables. Les algorithmes peuvent
changer indépendamment de l'application qui s'en sert.
UTILISER UNE STRATÉGIE INTERCHANGER UN
ALGORITHME
Dans ce patron une famille d'algorithmes sont encapsulés de
manière à être interchangeables. Les algorithmes peuvent
changer indépendamment de l'application qui s'en sert.
UTILISER UNE STRATÉGIE INTERCHANGER UN
ALGORITHME
Demo
UTILISATION DU
STRATEGY PATTERN
PROBLÈME
Fonctionnalités
transversales
Ce patron permet d'attacher dynamiquement des
responsabilités à un objet. C’est une alternative à l'héritage
UTILISER LE DÉCORATEUR POUR ÉVITER L’EXPLOSION
DE HIÉRARCHIE
Ce patron permet d'attacher dynamiquement des
responsabilités à un objet. C’est une alternative à l'héritage
UTILISER LE DÉCORATEUR POUR ÉVITER L’EXPLOSION
DE HIÉRARCHIE
Demo
UTILISATION DU
DECORATOR
PATTERN
PROBLÈME
Construction
complexe d’objets
Ce patron fournit une interface pour créer des objets sans
spécifier la classe concrète. La méthode s’occupe de la
création de l’instance.
UTILISER UNE FACTORY POUR DÉLÉGUER LA CRÉATION
D’OBJETS
Ce patron fournit une interface pour créer des objets sans
spécifier la classe concrète. La méthode s’occupe de la
création de l’instance.
UTILISER UNE FACTORY METHOD POUR DÉLÉGUER LA
CRÉATION D’OBJETS
Demo
UTILISATION DU
FACTORY PATTERN
0
1
0 1 2 3 4 5 6
Locale
COMPLEXITÉComplexité
Niveaux d’abstraction
0
1
0 1 2 3 4 5 6
Locale
Globale
COMPLEXITÉComplexité
Niveaux d’abstraction
Zone de confort
 A retenir
 Le design est un art plus qu’une science
 Les patterns sont là pour nous aider
 Faire attention à la complexité
 Eric De Carufel
 eric@decarufel.net
 http://blog.decarufel.net
 http://pyxis-tech.com
 Sources : https://bitbucket.org/decarufe/refactortopatterns
 Questions?
23
CONCLUSION
Est à la recherche de dévelopeurs
Visitez la section carrière sur
pyxis-tech.com

Contenu connexe

PPTX
Refactoring to Design Patterns
ODP
Building interactivity with websockets
PPTX
What Your Database Query is Really Doing
ODP
Your app lives on the network - networking for web developers
PDF
The Progressive Web and its New Challenges - Confoo Montréal 2017
PPTX
Microservices
PDF
The Soul in The Machine - Developing for Humans
PDF
Web Components & Shadow DOM
Refactoring to Design Patterns
Building interactivity with websockets
What Your Database Query is Really Doing
Your app lives on the network - networking for web developers
The Progressive Web and its New Challenges - Confoo Montréal 2017
Microservices
The Soul in The Machine - Developing for Humans
Web Components & Shadow DOM

En vedette (19)

PPS
Leaderpalooza Feb2010
PDF
Refactoring#9
PPTX
Big refactoring #12
PDF
[NEXT] Nextgram Refactoring
PDF
TDD&Refactoring Day 01: Refactoring
PPTX
Refactoring tutorial 1주차[refactoring 개요]
PPTX
Refactoring tutorial
PPTX
Influence With Peers
PDF
Af confef
ODP
Industrialiser ses développements PHP - RMLL 2010
PDF
Python avancé : Qualité de code et convention de codage
PDF
La qualité au-delà du code - ConFoo 2012
ODP
Caching and tuning fun for high scalability @ phpBenelux 2011
PDF
Becoming a Polyglot Programmer Through the Eyes of a Freelance Musician
PPTX
Geothermal energy
PPTX
Top 5 des meilleures façons d'améliorer votre code
PDF
Qualité de code et bonnes pratiques
PPTX
Running .NET on Docker
Leaderpalooza Feb2010
Refactoring#9
Big refactoring #12
[NEXT] Nextgram Refactoring
TDD&Refactoring Day 01: Refactoring
Refactoring tutorial 1주차[refactoring 개요]
Refactoring tutorial
Influence With Peers
Af confef
Industrialiser ses développements PHP - RMLL 2010
Python avancé : Qualité de code et convention de codage
La qualité au-delà du code - ConFoo 2012
Caching and tuning fun for high scalability @ phpBenelux 2011
Becoming a Polyglot Programmer Through the Eyes of a Freelance Musician
Geothermal energy
Top 5 des meilleures façons d'améliorer votre code
Qualité de code et bonnes pratiques
Running .NET on Docker
Publicité

Similaire à Refactoring vers les design patterns pyxis v2 (20)

PPT
Patrons de creation
PPTX
Patrons de conception
PPTX
Design Pattern: Développement et Bonnes pratiques
PDF
Design Patterns
PDF
DesignPatternsISI.pdf
PDF
Projet+com02.ppt
PPTX
Module development Patterns de Création.pptx
PDF
patron de conception
PPTX
Presentation DESIGN PATTERNS DE CREATION.pptx
PDF
Design patterns - Exemples en Java
PDF
Design Patterns (2003)
PDF
Design patterns
PDF
Abstract factory+adapter
PDF
Projet COM02.ppt
PPTX
Design patterns french
PPTX
Design patterns gof fr
PDF
CM-patterns.pdf
PPTX
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
PPT
Design Patterns
Patrons de creation
Patrons de conception
Design Pattern: Développement et Bonnes pratiques
Design Patterns
DesignPatternsISI.pdf
Projet+com02.ppt
Module development Patterns de Création.pptx
patron de conception
Presentation DESIGN PATTERNS DE CREATION.pptx
Design patterns - Exemples en Java
Design Patterns (2003)
Design patterns
Abstract factory+adapter
Projet COM02.ppt
Design patterns french
Design patterns gof fr
CM-patterns.pdf
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
Design Patterns
Publicité

Plus de Eric De Carufel (8)

PPTX
L’architecture au-delà de ça dépend.pptx
PPT
Bracket Show Episode 35 - histoire de c# de 2002 à 2019
PPTX
Gadgteteer clean code
PPTX
Architecture azure performante
PPTX
Cqrs + event sourcing pyxis v2 - en
PPTX
CQRS + Event Sourcing
PDF
Dvcs mercurial - pyxis - eric de carufel
PPTX
Top 5 des meilleures façon d'améliorer ton code
L’architecture au-delà de ça dépend.pptx
Bracket Show Episode 35 - histoire de c# de 2002 à 2019
Gadgteteer clean code
Architecture azure performante
Cqrs + event sourcing pyxis v2 - en
CQRS + Event Sourcing
Dvcs mercurial - pyxis - eric de carufel
Top 5 des meilleures façon d'améliorer ton code

Refactoring vers les design patterns pyxis v2

  • 1. REFACTORING VERS LES DESIGN PATTERNS Améliorer son architecture par les design patterns
  • 2.  Design est non-déterministe  Ce n’est pas un processus répétable qui garanti un résultat prédictible  Les techniques de design sont guidé par des heuristiques  Intuitive  Plusieurs facteurs l’influence  Le design est un processus itératif  Processus à évolution lente  Compromis et priorités  Principe d’essais et erreurs LES DÉFIS DU DESIGN
  • 3.  Abstraction claire  Designer de façon modulaire  Favoriser une forte cohésion  Séparation des préoccupations  Designer en strate ou en oignons  Limiter le nombre d’abstractions par niveau  Distribution des responsabilités balancée  S’inspirer des objets de la vie  Limitation du couplage  Garder le minimum d’interconnections  Rendre les contrats explicites  Encapsuler les détails d’implémentation LES HEURISTIQUES FONDAMENTALES
  • 4.  Choix de solutions simples  Pas de partie en trop (utiliser le TDD)  Éviter les défaillances  Design pour la testabilité  Identification des zones à haut risque de changement  Extensibilité, Plugins, IOC, DI  Utilisation de solutions éprouvées  Design Patterns LES HEURISTIQUES FONDAMENTALES
  • 5. Contexte DESIGN PATTERNS(PATRONS DE CONCEPTION) Problèmes connus Bonnes pratiques Solutions éprouvées
  • 6. Creational •Factory Method •Abstract Factory •Prototype •Singleton Structural •Adapter •Adapter •Bridge •Composite •Decorator •Facade •Proxy Behavioral •Interpreter •Template Method •Chain of responsibility •Command •Iterator •Mediator •Memento •Flyweight •Observer •State •Strategy •Visitor LES DESIGN PATTERNS Class Object
  • 9. Dans ce patron une famille d'algorithmes sont encapsulés de manière à être interchangeables. Les algorithmes peuvent changer indépendamment de l'application qui s'en sert. UTILISER UNE STRATÉGIE INTERCHANGER UN ALGORITHME
  • 10. Dans ce patron une famille d'algorithmes sont encapsulés de manière à être interchangeables. Les algorithmes peuvent changer indépendamment de l'application qui s'en sert. UTILISER UNE STRATÉGIE INTERCHANGER UN ALGORITHME
  • 13. Ce patron permet d'attacher dynamiquement des responsabilités à un objet. C’est une alternative à l'héritage UTILISER LE DÉCORATEUR POUR ÉVITER L’EXPLOSION DE HIÉRARCHIE
  • 14. Ce patron permet d'attacher dynamiquement des responsabilités à un objet. C’est une alternative à l'héritage UTILISER LE DÉCORATEUR POUR ÉVITER L’EXPLOSION DE HIÉRARCHIE
  • 17. Ce patron fournit une interface pour créer des objets sans spécifier la classe concrète. La méthode s’occupe de la création de l’instance. UTILISER UNE FACTORY POUR DÉLÉGUER LA CRÉATION D’OBJETS
  • 18. Ce patron fournit une interface pour créer des objets sans spécifier la classe concrète. La méthode s’occupe de la création de l’instance. UTILISER UNE FACTORY METHOD POUR DÉLÉGUER LA CRÉATION D’OBJETS
  • 20. 0 1 0 1 2 3 4 5 6 Locale COMPLEXITÉComplexité Niveaux d’abstraction
  • 21. 0 1 0 1 2 3 4 5 6 Locale Globale COMPLEXITÉComplexité Niveaux d’abstraction Zone de confort
  • 22.  A retenir  Le design est un art plus qu’une science  Les patterns sont là pour nous aider  Faire attention à la complexité  Eric De Carufel  [email protected]  http://blog.decarufel.net  http://pyxis-tech.com  Sources : https://bitbucket.org/decarufe/refactortopatterns  Questions? 23 CONCLUSION Est à la recherche de dévelopeurs Visitez la section carrière sur pyxis-tech.com