- Abstraction
- Encapsulation
- Protection des attributs de l’objet
- Polymorphisme
- Héritage
- Solutions «prototypiques» à des problèmes objets
- Réutilisable à des problèmes récurrents Peu d’algorithmique, plus des schéma orientés-objet
- Façons d’organiser le code pour augmenter
- Flexibilité
- Maintenabilité
- Extensibilité
- Configurabilité
- ...
- Le plus souvent basé sur des interfaces et abstractions
- Un vocabulaire commun et puissant
- Les patterns aident à concevoir facilement des systèmes
- Réutilisables: Responsabilités isolées, dépendances maitrisées
- Extensibles: Ouverts aux enrichissements futurs
- Limiter la modification de l’existant
- Maintenables par faible couplage
- Les patterns reflètent l’expérience de développeurs objets
- Solutions éprouvées et solides
- Les patterns ne sont pas du code mais des cadres de solutions générales à adapter à son problème particulier
- Les patterns aident à maîtriser les changements
- Les solutions plus triviales sont souvent moins extensibles
- Attention à l’overkill! Utilisez les patterns intelligemment
-
En 1995, quatre experts de l'orienté objet publient un livre où ils proposent des solutions génériques à des problèmes récurrents en développement logiciel. Ils ont en effet constaté que des modèles d'architecture répondent de manière identique à des problèmes semblables (constatation qui se généralise à d'autre do- maines que l'informatique : cuisine, architecture, mécanique. . .). Les solutions que les experts ont proposées se nomment patrons de conception ou design patterns (le terme anglais est souvent conservé).
-
23 patrons de conception sont proposés par les créateurs du concept qui les ont organisés en trois catégories. Ces trois catégories sont toujours d'actualité aujourd'hui :
-
5 Patterns créateurs
- Ciblent la construction des objets («aider» new, clone)
- Patterns Factory, AbstractFactory, Singleton...
- Ciblent la construction des objets («aider» new, clone)
-
7 Patterns structuraux
- Travaillent sur des aspects statiques, à «l’extérieur» des classes (notamment extensibilité)
- Patterns Façade, Adapter, Decorator, Proxy, Composite ...
- Travaillent sur des aspects statiques, à «l’extérieur» des classes (notamment extensibilité)
-
11 Patterns comportementaux
- Travaillent sur des aspects dynamiques, à « l’intérieur» des classes (parfois même des instances)
- Patterns Strategy, Iterator, Observer, Visitor
- Travaillent sur des aspects dynamiques, à « l’intérieur» des classes (parfois même des instances)