Comme son nom l'indique le principe des Facade est de créer une classe qui servira de façade à une autre classe en rendant la classe appellable via des appels statiques.
Exemple
Prenons l'exemple de notre classe QueryBuilder, il peut être pénible de devoir l'instancier pour pouvoir appeller une méthode dessus. On peut effectivement se créer un Factory mais on peut aller encore plus loin :
Ce design pattern très utilisé sur Laravel par exemple est très critiqué car cache une partie du code derrière la méthode magique callStatic, rendant ainsi le code plus difficile à débuguer. En effet, en regardant QueryFacade::select on s'attend naturellement à avoir une méthode statique select sur QueryFacade alors que ce n'est pas le cas (et les IDE sont encore plus perdu lorsqu'il s'agit de fournir de l'autocomplétion).