Retour
Cours précédent
Cours suivant

Problèmes de conception classiques

SOLID design

SOLID est un acronyme qui désigne cinq principes de conception destinés à produire des architectures logicielles plus compréhensible, flexibles et maintenables.

Ces concepts sont :

Single responsability principle

Un classe ou une méthode doit avoir une et une seule responsabilité.

Open/closed principle

Une entité applicative (classe, methode) doit être ouverte à l’extension, mais fermée à la modification.

Liskov substitution principle

Une instance du type T doit pouvoir être remplacé par une instance de type G, tel que G sous-type de T, sans que cela ne modifie la cohérence du programme.

Interface segregation principle

Il est préférable d’avoir plusieurs interfaces spécifiques pour chaque client plutôt qu’un seule interface générale.

Dependency inversion principle

Il faut dépendre des abstractions, et non des implémentations.

Patterns de conception

Un modèle décrit un problème que l’on rencontre régulièrement lors de l’élaboration d’un logiciel. Il apporte à ce problème une solution élégante, c’est-à-dire :

Il existe trois groupes de pattern :

Patterns de création

Les modèles de création permettent de modéliser le processus d’instanciation. Il sont particulèrement intéressants dans les architectures basées sur la composition d’objets.

Abstract Factory

La fabrique abstraite fournit une interface pour la création de famille d’objets apparentés ou interdépendants, sans qu’il soit nécessaire de spécifier leur classes concrètes

Indication d’utilisation :

Conséquence d’utilisation :

classDiagram direction BT class AbstractFactory { <<interface>> +createProductA() +createProductB() } class ConcreteFactory1 { +createProductA() +createProductB() } class ConcreteFactory2 { +createProductA() +createProductB() } ConcreteFactory1 --|> AbstractFactory ConcreteFactory2 --|> AbstractFactory ProductA1 --|> IProductA ProductA2 --|> IProductA ProductB1 --|> IProductB ProductB2 --|> IProductB ConcreteFactory2 ..> ProductA2 ConcreteFactory2 ..> ProductB2 ConcreteFactory1 ..> ProductA1 ConcreteFactory1 ..> ProductB1

Builder

Dissocie la construction d’un objet complexe de sa représentation de sorte que le même processus de construction permette des représentations différentes.

Indication d’utilisation :

Conséquence d’utilisation :

classDiagram direction BT class Builder { <<interface>> +addA() +addB() +build() } class ConcreteBuilder { +addA() +addB() +build() } ConcreteBuilder --|> Builder ConcreteBuilder ..> Product

Singleton

Garantit qu’une classe n’a qu’une seule instance et fournit un point d’accès de type global à cette classe.

Indication d’utilisation :

Conséquence d’utilisation :

classDiagram class Singleton { +getInstance()$ -instance$ -Singleton() }

Prototype

Spécifie le type des objets à créer à partir d’une instance de prototype et crée de nouveaux objets en copiant ce prototype.

Indication d’utilisation :

Conséquences d’utilisation :

classDiagram class Prototype { <<interface>> +clone() }

Method Factory

Définit une interface pour la création d’un objet, mais en laissant les sous-classes le choix des classes à instancier. La factory permet à une classe de déléguer l’instanciation à une sous-classe.

Indication d’utilisation :

Conséquence d’utilisation :


Retour
Cours précédent
Cours suivant