Builder pattern
Chaque façade expose un builder fluide qui compose une requête par
enchaînement de méthodes, terminé par .execute().
Exemple : Code.search()
Section intitulée « Exemple : Code.search() »resultats = ( code.search() .in_code(NomCode.CC) .article_number("1382") .with_formatter() .execute())Les builders retournent Self pour permettre le chaînage ; ils prennent le
LegifranceClient en premier argument.
Builders existants
Section intitulée « Builders existants »| Builder | Point d’entrée | Méthodes typiques |
|---|---|---|
CodeSearchBuilder | Code.search() | .in_code(), .text(), .article_number(), .at_date(), .with_formatter(), .paginate(), .execute() |
CodeConsultFetcher | Code.fetch_code(id) | .include_abrogated(), .section(), .at(date) |
ArticleFetcher | Code.fetch_article(id) | .at(date) |
Pourquoi un builder plutôt qu’un gros dataclass ?
Section intitulée « Pourquoi un builder plutôt qu’un gros dataclass ? »- Lisibilité : la requête se lit comme une phrase.
- Progressivité : chaque étape est optionnelle et composable.
- Typage : chaque méthode restreint les paramètres licites (ex.
in_codeaccepte unNomCode, pas unstr). - Découverte : l’auto-complétion guide l’utilisateur·rice vers les méthodes valides.