macht es Sinn für die Anzahl an Routen zu verringern, z.b statt [..]
Unbedingt! Du hast einen Statischen Teil, z.B. /foo. Und eine dynamische Komponente, das sind mögliche RequestParameter, custom request header und cookies. Auch die RequestMethod ist eine dynamische Komponente. So muss eine Routingtable nur statische Routen also den statischen Teil halten.
Sollte ich Funktionen an die Routen binden oder wäre es besser ein Objekt an die Routen zu binden?
Aus der statischen Routingtable ergibt sich doch ein Objekt: Du bekommst eine Reihe Schlüssel=Wert Paare für sämtliche Eigenschaften die damit konfigurierbar sind. Die an den URL gebundene Methode kriegt wie bisher ein request und ein responseobjekt und zusätzlich übergibst Du die Konfiguration als Objekt. Die Methode kümmert sich dann um die dynamischen Komponenten wie Benutzereingaben, sendet Mails und kommuniziert mit Datenbanken und baut die Response zusammen.
Viel Erfolg!