Commit 232f05d5 authored by Thibault BEZIERS-LA-FOSSE's avatar Thibault BEZIERS-LA-FOSSE
Browse files

Update README.adoc

parent 00f6605d
......@@ -33,18 +33,15 @@ message.build();
```
Ce code semble très simple, mais il y a une difficulté potentielle:
si la construction de l'objet est complexe et qu'il y a trop d'attributs à modifier,
le développeur peut en oublier certains et créer un objet incomplet.
si la construction de l'objet est complexe et qu'il y a trop d'attributs à modifier, le développeur peut en oublier certains et créer un objet incomplet.
Dans de nombreuses applications, il y a souvent une entité centrale, comme une "Commande", un "Produit" ou un "Service",
dont les instances sont créées dans différentes morceaux de code.
Dans ces cas, l'oubli d`initialiser un attribut peut s'avérer très couteux en termes de déboggage et de maintenance.
Dans de nombreuses applications, il y a souvent une entité centrale, comme une "Commande", un "Produit" ou un "Service", dont les instances sont créées dans différents morceaux de code.
Dans ces cas, l'oubli d'initialiser un attribut peut s'avérer très couteux en termes de déboggage et de maintenance.
Une question se pose:
[quote]
Comment aider le développeur à se rappeler de tous les attributs, obligatoires et optionnels?
La réponse est de forcer le développeur à initialiser tous les attributs obligatoires *avant* d'appeler la méthode de construction.
Ainsi, tous les attributs obligatoires seront initialisés et l'objet créé sera complet.
Ce qui soulève une nouvelle question:
......@@ -94,8 +91,7 @@ public EmailMessageBuilder to(String recipient) {
}
```
Si le chaînage de méthodes permet de simplifier le code de création d'objets,
il ne peut pas empêcher l'oubli de certains attributs, ni l'appel de la méthode `build()` avant que tous les attributs soient initialisés.
Si le chaînage de méthodes permet de simplifier le code de création d'objets, il ne peut pas empêcher l'oubli de certains attributs, ni l'appel de la méthode `build()` avant que tous les attributs soient initialisés.
Une nouvelle question se pose alors:
......@@ -106,9 +102,7 @@ Pour répondre à cette question, nous allons utiliser le chaînage d'interfaces
=== Le chaînage d'interfaces
La logique du chaînage d'interfaces est de limiter l'accès lors du chaînage de méthodes, en créant une interface pour chaque attribut obligatoire et
en modifiant le type de retour de chaque modificateur pour le faire retourner la prochaine interface.
La logique du chaînage d'interfaces est de limiter l'accès lors du chaînage de méthodes, en créant une interface pour chaque attribut obligatoire et en modifiant le type de retour de chaque modificateur pour le faire retourner la prochaine interface.
Compliqué ? Oui, en effet, mais la logique deviendra plus claire en regardant le code des interfaces:
```java
......@@ -180,7 +174,7 @@ Cet utilisateur virtuel que nous contrôlons nous donne le droit d’accéder à
=== Le protocole DNS-SD
DNS _Service Discovery_, ou simplement DNS-SD est un protocole de publication et découverte de services à l'intérieur d'un réseau local, et qui utilise des enregistrements DNS de type SRV, PTR et TXT.
DNS _Service Discovery_, ou simplement DNS-SD est un protocole de publication et de découverte de services à l'intérieur d'un réseau local, qui utilise des enregistrements DNS de type SRV, PTR et TXT.
Notre objectif ici n'est pas de comprendre le fonctionnement de ce protocole dans les détails, mais seulement de simplifier la publication de services grâce à une interface fluide.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment