Les développeurs orientés objet expérimentés construisent des répertoires de principes généraux et de solutions idiomatiques que les guident lorsqu'ils développent des SI. Ces principes et ces idiomes qui décrivent le problème et sa solution, peuvent être qualifiés de patterns (motifs de conception).
Un pattern est un couple problème/solution nommé, que l'on peut appliquer à de nouveaux contextes. Il est accompagné de conseils sur la façon de l'appliquer et d'une présentation de ses avantages et de ses inconvénients.
Un pattern GRASP (General Responsibility Assignment Software Patterns – patterns généraux d'affectation des responsabilités - qui signifie en anglais “saisir, comprendre”) est une description des principes fondamentaux de la conception objet et de l'affectation des responsabilités exprimées sous forme réutilisable. Donc, GRASP est une aide pédagogique pour concevoir des objets avec des responsabilités.
Le GoF propose une solution structurelle, comportementale ou créationnelle. Les solutions structurelles sont là pour structurer l'application ou une partie de l'application. Les solutions dites comportementales existent pour donner des indications sur la structure des méthodes, on veut structurer le comportement et l'interaction entre les classes. Du côté créationnel, l'objectif est de structurer la création des objets.
Courtes descriptions de patterns que l'on retrouve dans livre Patterns of Enterprise Application Architecture de Martin Fowler.
Un objet modèle du domaine qui inclus le comportement et les données.
Une couche de Mappers qui manipule les données entre les objets et une base de données, tout en étant indépendants les uns des autres et du mapper lui-même.
Maintient une liste d'objets affectés par les transactions d'affaires et coordonne l'écriture des changements et la résolution des problèmes de coratéralité.
Un objet qui n'a pas toutes les données, mais qui sait comment les obtenir.
Garde le champ ID de la base de données dans l'objet pour maintenir l'identité entre l'objet en mémoire et l'enregistrement de la base de données.
Met en correspondance une association entre les objets et une référence d'une clé étrangère entre les tables.