Session-Daten schreiben hat NICHTS mit dem Response zu tun. Das ist Applikationslogik und gehört in die Persistenzschicht.
Ja sicher muss das getrennt werden. Beispielsweise über einen Data Acccess Layer wie ich bereits schrieb. Die Factory-Methode ist lediglich eine besondere Vorgehensweise die beschreibt, wo nämlich genau diese Layer eingebunden werden. In Perl nutze ich für sowas den AutoLoader und die Methoden, in dedizierten Dateien definiert, sind so aufgebaut, dass sie von einer beliebigen Instanz, also auch von einem sog. Mock (Attrappe) aufgerufen werden können.
Welche weiteren Klassen in solchen ausgelagerten Methoden eingebunden werden und wo die dann die Daten physikalisch hinschreiben, ist der main völlig egal.