Aller au contenu

Builder pattern

Chaque façade expose un builder fluide qui compose une requête par enchaînement de méthodes, terminé par .execute().

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.

BuilderPoint d’entréeMéthodes typiques
CodeSearchBuilderCode.search().in_code(), .text(), .article_number(), .at_date(), .with_formatter(), .paginate(), .execute()
CodeConsultFetcherCode.fetch_code(id).include_abrogated(), .section(), .at(date)
ArticleFetcherCode.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_code accepte un NomCode, pas un str).
  • Découverte : l’auto-complétion guide l’utilisateur·rice vers les méthodes valides.