Suppongo che avresti un po 'di logica per decidere quale reale "comunque decidi di chiamarlo" per usarlo. Quindi, "un cliente ha bisogno di ottenere un elenco di prodotti da qualche parte". Bene, dagli un " Elenco ". Il client non sa da dove viene la "lista", sa solo che riceve una "lista".
Tuttavia, se stiamo parlando di un oggetto da cui puoi tirare entità o tirare liste di entità, allora abbiamo bisogno di un altro nome ... forse un " Iterator "?
Ora, forse vuoi astrarre da dove ottieni "Elenco" o "Iteratore". In tal caso, direi che è una " connessione al database " (nota: database non implica relazionale, né persistente).
Tuttavia, potresti pensare a un " adattatore ", ovvero un oggetto che converte un'interfaccia scomoda in una più facile da usare. In questo caso, sta convertendo l'interfaccia scomoda dell'origine dati effettiva in qualcosa che è possibile utilizzare senza preoccuparsi di ciò. Ad esempio, se un'applicazione può funzionare con diversi motori di database, avrà un adattatore per ciascuno di essi.
Dalle parole che hai, la chiamerei " Fonte ". Facendo un'analogia con "DataSource", come un oggetto da cui il codice client può recuperare le entità senza preoccuparsi di dove effettivamente provengono.
Riguardo alle altre parole che hai, " Archiviazione " suggerirebbe di poter archiviare lì. E per " Reposity " mi aspetterei una repertorizzazione del luogo in cui sono archiviati i dati. Mi aspetto che abbia informazioni su quel posto.