Questa potrebbe essere una domanda facile per ingegneri esperti del software.
Attualmente sto leggendo il libro Clean Architecture di Uncle Bob, e sto cercando di implementare la pulizia architettura in un progetto Java.
Ora, nel mio progetto, mi sono imbattuto nella stessa identica situazione descritta qui nel capitolo 17 del libro:
Lalinearossaèilconfinetrailcomponentedelleregoledibusinessdialtolivelloeilcomponentedidatabasedibassolivello.GrazieaDatabaseInterface
,chefapartedelcomponentedialtolivello,maimplementatonelcomponentedibassolivello,laregoladidipendenzaèsoddisfatta.
Tuttavia,inchemodoBusinessRules
puòottenereun'istanzadiunoggettocheimplementaDatabaseInterface
senzaviolarelaregoladidipendenza?
LaclassediimplementazioneDatabaseAccess
sitrovanelcomponentedibassolivelloeilcomponentedialtolivellonondevesaperenullasulleclassinelcomponentedibassolivello.
Inaltreparole,nonpossiamoistanziareunoggettoDatabaseAccess
all'internodiBusinessRules
,perchéciòviolerebbelaregoladidipendenza.
Inchemodoquestoproblemavienegeneralmenterisolto?
Nota:
LastessasituazioneèdescrittaanchenelCapitolo18:
E anche qui, in che modo Client
può ottenere un'istanza di ServiceImpl
senza violare la regola di dipendenza?
Il libro non fornisce alcun indizio su come ciò sia fatto nella pratica. Sarei molto interessato a sapere quale sia la strategia corretta per risolvere questa situazione.