Una delle regole più reclamate di OOP è mantenere le classi piccole. Ciò significa che in un progetto di dimensioni significative ci sono migliaia di classi.
Logicamente sembra logico combinare classi correlate in vari "sottosistemi" (o vari livelli di sottosistema). La mia comprensione della legge di Demeter qui è che una classe nel sottosistema X non dovrebbe parlare direttamente con una classe nel sottosistema Y; invece il sottosistema Y dovrebbe fornire una facciata per astrarre i dettagli delle singole classi al suo interno. Tuttavia, in un'applicazione complessa, la facciata deve per definizione essere una grande classe. con molti metodi, anche se in realtà non fa molto.
Quindi dovrei usare le classi di facciata (presumibilmente a diversi livelli) per mantenere una struttura gerarchica di sottosistemi, o dovrei trattare ogni classe come entità separata e usarla direttamente?