Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Approche des patrons de conception

Par Pierre DIANCOURT Publié le 29/10/2015 à 21:02:24 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

 

Cet article est destiné aux développeurs en herbe à la recherche de pistes d'abstraction pour leur séances de refactoring ("réusinage de code" en français). Alors oui, cette introduction et ce sujet peuvent faire peur, paraître obscurs, mais il est impératif que vous deveniez familier avec le concept de "Design Pattern" (version anglophone du terme "patron de conception") afin d'envisager accéder à un niveau de développeur professionnel.

 

Rassurez-vous néanmoins, nous n'aborderons dans cet article que les principaux patrons de conception, leurs finalités, leurs limites. Et ce, afin de vous éviter de tomber des nues la première fois que l'on vous en parlera. En effet chaque patron mentionné permettrait l'écriture d'un article indépendant le concernant.

 

Usages des patrons de conception

 

L'utilisation de "Design Pattern" permet d'accélérer le processus de développement par l'apport de paradigmes de développement à l'efficacité éprouvé pour une problématique donnée. Une conception logicielle efficace nécessite de prendre en considération des problématiques qui peuvent se révéler qu'à un stade tardif du processus d'implémentation (ou bien "implantation" si l'on fait le choix de refuser l'anglicisme issu de "implementation"). La réutilisation des même patrons de développement aide à prévenir de subtils soucis pouvant parfois causer des problèmes majeurs. En outre, et conformément au lien fait dans l'introduction, l'utilisation de design patterns est souvent associé au refactoring. La raison de ce rapprochement est l'apport d'une certaine facilité de relecture du code par l'utilisation de patrons de développement familiers à la plupart des développeurs.

 

Bien souvent on ne comprend comment appliquer certaines technique de conception logicielle qu'à certains problèmes. Ces techniques n'étant que trop peu applicables à une plus large gamme de problématiques, on s'aperçoit rapidement de l'utilité du guide apporté par la connaissance de solutions plus génériques : les design patterns.

 

Dernier point et non des moindres, ces patrons de conception permettent une meilleure communication entre développeur en établissant des termes et noms d'intéractions logicielles connus et bien compris de tous.

 

Types de patrons de conception

Patrons créateurs d'objets

 

Dans cette catégorie il est question d'instantiation de classes. On pourrait encore sous-diviser les patrons suivants en deux sections : patrons de création de classe et patrons de création d'objets. Alors que les patrons de création de classe utilisent l'héritage dans le processus d'instantiation, les patrons de création d'objets utilisent la délégation pour remplir leur rôle.

 

Abstract Factory

Créer une instance de plusieurs familles de classes

Builder

Sépare la construction de l'objet de sa représentation

Factory Method

Créer une instance de plusieurs classes dérivées

Object Pool

Evite une coûteuse obtention et libération de ressources en recyclant les objets qui ne sont plus utilisés

Prototype

Une instance initialisée prête à être copiée ou clonée

Singleton

Une classe qui n'autorise qu'une seule instanciation

 

Patrons structurels

 

Il n'est ici question que de la composition de classes et objets. Une fois encore on pourrait regrouper les patrons suivants en deux catégories : les patrons structurels de création de classe et les patrons structurels d'objets. La première utilisant l'héritage pour composer des interfaces, la seconde définissant la manière de composer des objets pour obtenir une nouvelle fonctionnalité.

 

Adapter

Fait la liaison entre les interfaces de différentes classes

Bridge

Sépare l'interface d'un objet de son implementation

Composite

Une structure arborescente d'objets simples et composites

Decorator

Ajoute dynamiquement des responsabilités aux objets

Facade

Une unique classe qui represente un sous-système entier

Flyweight

Une instance de fine granularité au partage efficace

Private Class Data

Restreint l'accès aux getter et setter

Proxy

Un objet représentant un autre objet

 

Patrons de comportement

 

Ces patrons concernent tous la communication entre objets.

 

Chain of responsibility

Une manière de passer des requêtes au sein d'une chaîne d'objets

Command

Encapsule une requête de commande comme objet

Interpreter

Un moyen d'inclure des éléments de langage dans un programme

Iterator

Accession séquencielle des éléments d'une collection

Mediator

Définit des communications simplifiées entre classes

Memento

Capture et restaure l'état interne d'un objet

Null Object

Objet désigné pour agir comme valeur par défaut d'un type objet

Observer

Une manière de notifier un changement à différentes classes

State

Altère le comportement d'un objet quand son état change

Strategy

Encapsule un algorithme dans une classe

Template method

Délegue les étapes précises d'un algorithme à une sous-classe

Visitor

Définit une nouvelle opération à une classe sans changement

 

Limites à garder en tête

 

Il est possible que le fait de considérer l'utilisation de tel ou tel patron de conception soit d'intérêt variable suivant le langage utilisé. En effet tous les langages ne bénéficient pas des mêmes possiblités d'abstraction.

 

Attention à ne pas vouloir appliquer coûte que coûte un patron à chaque problématique de programmation qui s'offre à vous, ce ne sont grossièrement que des standardisations de bonnes pratiques communément acceptées. Il se peut très bien que l'application de celles-ci ne soient pas nécessaire à la bonne compréhension universelle de votre code ainsi qu'à la résolution de votre problématique de développement.

 

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels