java:adapter
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
java:adapter [2018/11/13 20:11] – créée bruno | java:adapter [2018/11/23 08:27] (Version actuelle) – [Deuxième approche: la composition] bruno | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ça arrive. | + | ====== Le design pattern Adapter ====== |
+ | //Vous avez besoin de certaines fonctionnalités d'un objet qui répond en partie à vos besoins, mais cet objet propose également de nombreuses fonctionnalités que vous ne voulez pas exposer ou utiliser?// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | La pattern Adapter illustre toute la puissance et l' | ||
+ | |||
+ | ===== Un premier exemple ===== | ||
+ | Vous souhaitez disposer d'une classe qui représente un mot de passe. | ||
+ | |||
+ | Un mot de passe: | ||
+ | - doit contenir au moins une majuscule | ||
+ | - doit contenir au moins une minuscule | ||
+ | - doit au moins un chiffre | ||
+ | - doit faire au moins 8 caractères. | ||
+ | |||
+ | Un mot de passe est une chaîne de caractères. Vous pensez tout de suite à la classe String de java, mais en regardant l' | ||
+ | |||
+ | Pire même: elle peuvent se révéler dangereuses pour représenter un mot de passe (pas de contrôle de validité, possibilité de modifier sans contrôle le mot de passe, etc.). | ||
+ | |||
+ | ==== Première approche naïve: héritage ==== | ||
+ | |||
+ | La première solution semble être l' | ||
+ | |||
+ | Quel problème cela pose-t-il? | ||
+ | |||
+ | < | ||
+ | Voici la classe String de java (uniquement ce qui est public): | ||
+ | {{ : | ||
+ | |||
+ | Avez-vous vraiment envie de redéfinir toutes ces méthodes? | ||
+ | </ | ||
+ | |||
+ | ==== Deuxième approche: la composition ==== | ||
+ | Admettons que les fonctionnalités utiles de String pour notre problème sont les suivantes: | ||
+ | |||
+ | {{ : | ||
- | Exemple de point/point positif |
java/adapter.1542139912.txt.gz · Dernière modification : 2018/11/13 20:11 de bruno