uhm praticamente si
poiche' le factory richiede sia le classi normali che le classi di factorying.
Inoltre dovrai poi strutturare MOLTO bene le classi "gerarchiche" e quelle parallele.

quindi dovrai corstuire una struttura opportuna di come albero delle classi che come albero di dirs o namespace che userai.

Non e' immediato come pattern. e ci vuole parecchio a capire come gestirlo bene.
Tuttora io sto studiando delle soluzioni factory + namespacing che mi rendano libero
Cmq come struttyura avari una cosa del tipo

--app
|_index
|_ [css]
|_ [js]
|_ [images]
|_ [core]
...|_ [factories]
......|_ main
......|_ database
......|_ pageCreator
......|_ users
......|_ etc...
......|_ [classes]
.........|_user
.........|_user_admin
.........|_user_super
.........|_user_mod
...|_[actions]
......|_userLogin.php

O qualcosa di simile vedi te puoi quano innestare e quanta profonditaà vuoi avere

Faccio esempio con utenti userLogin.php
Codice PHP:
<?PHP
$eh 
f_errorHandler::getInstance();
$db f_database::getInstance$connectionData ) ;

$currUserLogin $_POST["login"] :
$currUserPwd   $_POST["pwd"] ;

$userManager f_userManager::getInstance() ;
$currUser $userManager->getUserByLogin($currUserLogin,$currUserPwd) ;

if( !
$currUser )
{
   
$eh->reportError"INVALID LOGIN" ) ;
   die();
}

// LOGIN OK STIPA USER IN SESSION
$sh f_sessionHandler::getIstance();
$sh->set"user" $currUser ) ;

// Perform redirect
$mover f_redirectManager::getIstance();
$mover->goto("./home.html") ;

?>

Come vedi in php e' un poco un casotto ma rende le cose molto leggibili.
Il problema riguarda l'inclusione di quello che ti serve quando ti serve.
Ma se scrivi un opportuna factory f_includeManager puoi gestire le inclusioni e le istanziazioni anche da namespace

Questo unitamente al fatto che per quanto riguarda lo user la factory puo' dare

user , userAdmin , userSuper etc...

ogununa di queste classi e' un'estensione dell'altra e qui vedi un esempio di gerarchia

user
|_ userSuper
...|_userModerator
.....|_userAdmin

Ogni classe estende la precedente aggiungendo metodi e permessi.
La factory quindi deciderà in autonomia che "prodotto" creare a login dello user e ti darà il ris ready to use