Abbiamo due moduli: D e S. S ha un'interfaccia del servizio Web, che viene utilizzata da D.
La responsabilità di S è la gestione di un dominio di oggetti contenuti in una struttura simile a una cartella. Quindi, contiene un metodo come: object Get(Path path)
, dove Path
DTO rappresenta una collezione di stringhe, che sono componenti di un percorso (cioè per ottenere un oggetto memorizzato in /x/y/z
si chiama Get
con path
contenente un array ['x', 'y' ,'z']
). Concettualmente il percorso è un identificatore di un oggetto.
Una delle responsabilità di D è presentare i grafici con i dati acquisiti da alcuni oggetti di S. D consente agli utenti di scegliere l'oggetto S desiderato utilizzando una vista di navigazione dell'albero. In modo efficace, un utente sceglie un percorso, che è un "indirizzo" dal quale l'oggetto di S deve essere recuperato da S.
Il problema è che non vogliamo che D abbia "array di stringhe" galleggianti attorno ad esso.
Tuttavia, non vogliamo anche che D capisca come funziona il percorso (cioè quale sia il separatore, che i componenti del percorso vuoti non siano consentiti, che un separatore principale debba partire da root, ecc.) in modo efficace duplicando la logica di S .
Inoltre, non vogliamo avere una dipendenza da D a S più potente del servizio Web, perché questo è uno dei punti del servizio Web.
Ovviamente abbiamo qualche altra idea, ma non siamo sicuri di nessuno di questi.