Patrons de conception/Patrons GRASP
GRASP signifie General Responsibility Assignment Software Patterns/Principles.
Ces patrons de conception donnent des conseils généraux sur l'assignation de responsabilité aux classes et objets dans une application. Ils sont issus du bon sens de conception, intuitifs et s'appliquent de manière plus générale.
Une responsabilité est vue au sens conception (exemples : création, détention de l'information, ...) :
- elle est relative aux méthodes et données des classes,
- elle est assurée à l'aide d'une ou plusieurs méthodes,
- elle peut s'étendre sur plusieurs classes.
En UML, l'assignation de responsabilité peut être appliquée à la conception des diagrammes de collaboration.
Les patrons de conception GRASP sont les suivants :
- Expert en information
- Affecter les responsabilités aux classes détenant les informations nécessaires.
- Créateur
- Déterminer quelle classe a la responsabilité de créer des instances d'une autre classe.
- Faible couplage
- Diminuer le couplage des classes afin de réduire leur inter-dépendances dans le but de faciliter la maintenance du code.
- Forte cohésion
- Avoir des sous-classes terminales très spécialisées.
- Contrôleur
- Affecter la responsabilité de réception et traitement de messages systèmes.
- Polymorphisme
- Affecter un nouveau comportement à l'endroit de la hiérarchie de classes où il change.
- Fabrication pure
- Créer des classes séparées pour des fonctionnalités génériques qui n'ont aucun rapport avec les classes du domaine applicatif.
- Indirection
- Découpler des classes en utilisant une classe intermédiaire.
- Protection
- Ne pas communiquer avec des classes inconnues.