Pour le design pattern Decorator, le principe est le suivant, je reprend l'exemple de pointColore, on aimerait bien que PointColore hérite de Point et de Couleur :
+-------------+
| PointColore |
+-------------+
+-------------+
^ ^
/ \
(héritage) / \ (héritage)
/ \
+-------------+ +-------------+
| Point | | Couleur |
+-------------+ +-------------+
| x | | valeur |
| y | +-------------+
+-------------+
Mais en java, pas d'héritage multiple, on peut donc faire cela :
+-------------+
| PointColore |
+-------------+---+
+-------------+ |
| getValeur() | |
+-------------+ |
^ \ 0..* |
/ \ | (implémentation)
(héritage) / \ |
/ \ 1 V
+-------------+ +-------------+
| Point | | ICouleur |
+-------------+ +-------------+
| x | +-------------+
| y | | getValeur() |
+-------------+ +-------------+
^
| (implémentation)
|
+-------------+
| Couleur |
+-------------+
| valeur |
+-------------+
| getValeur() |
+-------------+
Je te donne la classe PointColore :
public class PointColore extends Point implements ICouleur {
private ICouleur couleur;
public PointColore(){
couleur = new Couleur();
}
@Override
public Color getValeur(){
return couleur.getValeur();
}
}