Patrons de conception/Décorateur
Un décorateur est le nom d'un patron de conception de structure.
Un décorateur permet d'attacher dynamiquement de nouveaux comportements ou responsabilités à un objet. Les décorateurs offrent une alternative assez souple à l'héritage pour composer de nouvelles fonctionnalités.
Objectifs.
Beaucoup de langages de programmation orientés objets ne permettent pas de créer dynamiquement des classes, et la conception ne permet pas de prévoir quelles combinaisons de fonctionnalités sont utilisées pour créer autant de classes.
Exemple : Supposons qu'une classe de fenêtre Window ne gère pas les barres de défilement. On créé une sous-classe ScrollingWindow. Maintenant, il faut également ajouter une bordure. Le nombre de classes croît rapidement si on utilise l'héritage : on créé les classes WindowWithBorder et ScrollingWindowWithBorder.
Par contre, les classes décoratrices sont allouées dynamiquement à l'utilisation, permettant toutes sortes de combinaisons. Par exemple, les classes d'entrées-sorties de Java permettent différentes combinaisons (FileInputStream + ZipInputStream, ...).
En reprenant l'exemple des fenêtres, on créé les classes ScrollingWindowDecorator et BorderedWindowDecorator sous-classes de Window stockant une référence à la fenêtre à « décorer ». Étant donné que ces classes décoratives dérivent de Window, une instance de ScrollingWindowDecorator peut agir sur une instance de Window ou une instance de BorderedWindowDecorator.
Exemples.
Java.
Ce programme illustre l'exemple des fenêtres ci-dessus.
// interface des fenêtres
interface Window
 public void draw(); // dessine la fenêtre
 public String getDescription(); // retourne une description de la fenêtre
// implémentation d'une fenêtre simple, sans barre de défilement
class SimpleWindow implements Window
 public void draw()
 // dessiner la fenêtre
 public String getDescription()
 return "fenêtre simple";
Les classes suivantes contiennent les décorateurs pour toutes les classes de fenêtres, y compris les décorateurs eux-mêmes.
// classe décorative abstraite, implémente Window
abstract class WindowDecorator implements Window
 protected Window decoratedWindow; // la fenêtre décorée
 public WindowDecorator (Window decoratedWindow)
 this.decoratedWindow = decoratedWindow;
// décorateur concret ajoutant une barre verticale de défilement
class VerticalScrollBarDecorator extends WindowDecorator
 public VerticalScrollBarDecorator (Window decoratedWindow)
 super(decoratedWindow);
 public void draw()
 drawVerticalScrollBar();
 decoratedWindow.draw();
 private void drawVerticalScrollBar()
 // afficher la barre verticale de défilement
 public String getDescription()
 return decoratedWindow.getDescription() + ", avec une barre verticale de défilement";
// décorateur concret ajoutant une barre horizontale de défilement
class HorizontalScrollBarDecorator extends WindowDecorator
 public HorizontalScrollBarDecorator (Window decoratedWindow)
 super(decoratedWindow);
 public void draw()
 drawHorizontalScrollBar();
 decoratedWindow.draw();
 private void drawHorizontalScrollBar()
 // afficher la barre horizontale de défilement
 public String getDescription()
 return decoratedWindow.getDescription() + ", avec une barre horizontale de défilement";
Voici un programme de test qui créé une fenêtre pleinement décorée (barres de défilement verticale et horizontale) et affiche sa description :
public class DecoratedWindowTest
 public static void main(String[] args)
 Window decoratedWindow =
 new HorizontalScrollBarDecorator (
 new VerticalScrollBarDecorator(
 new SimpleWindow()
 );
 // afficher la description
 System.out.println(decoratedWindow.getDescription());
Ce programme affiche :
 fenêtre simple, avec une barre verticale de défilement, avec une barre horizontale de défilement
Les deux décorateurs utilisent la description de la fenêtre décorée et ajoute un suffixe.
C#.
Ici l'héritage est utilisé.
//______________________________________________________________________
// Déclarations
abstract class Voiture
class AstonMartin : Voiture
//______________________________________________________________________
// Décorateurs
class Option : Voiture
 protected Voiture _originale;
 protected double _tarifOption;
 public Option(Voiture originale, double tarif)
 _originale = originale;
 _tarifOption = tarif;
 public override double Prix
class Climatisation : Option
class Parachute : Option
class Amphibie : Option
//______________________________________________________________________
// Implémentation
class Program
 static void Main()
 Voiture astonMartin= new AstonMartin();
 astonMartin = new Climatisation(astonMartin);
 astonMartin = new Parachute(astonMartin);
 astonMartin = new Amphibie(astonMartin);
 Console.WriteLine(astonMartin.Prix); // affiche 1110.99

Patrons de conception/Patrons de comportement

Un patron de comportement permet de résoudre les problèmes liés aux comportements, à l'interaction entre les classes.
Les différents patrons de comportement sont les suivants :

Photographie/Fabricants/Pentax/Pentax DA 50-200 mm f/4-5,6 ED WR

Dorure sur bois
Depuis l'Antiquité, il a été d'usage de rehausser les objets d'art, de culte, ou précieux, en les recouvrant d'or. Ce métal, le seul à l'époque à avoir la particularité de ne pas s'oxyder, était symbole d'immortalité, et donc du divin.
On trouve ainsi des statuettes de bois, des objets en métal, en pierre, dont la surface totale ou partielle a fait l'objet d'un recouvrement, à l'aide d'une feuille d'or très mince, afin de ne pas boucher les détails du support.
Cette pratique a évolué au cours des siècles, et on dore encore aujourd'hui beaucoup d'objets. Au fil du temps, on a vu apparaître deux autres procédés de dorure.
Méthode de dorure sur bois.
Il existe deux techniques principales de dorure : la dorure à l'eau et la dorure à la mixtion. On peut appliquer des feuilles d'or, d'argent, de cuivre, de palladium, etc.
La dorure à l'eau ou à la détrempe est le procédé traditionnellement utilisé sur le bois.

Patrons de conception/Chaîne de responsabilité