Dove istanziare l'oggetto su un'architettura pulita

2

Sto cercando di avvolgere la mia mente sull'architettura pulita, ma mi trovo alle prese con il concetto di come evitare alcune dipendenze.

Sto implementando un'API in Java per uso personale, tuttavia stavo cercando di trovare alcuni esempi e ho trovato questo post: link

Ho controllato il progetto e ho controllato l'implementazione fino a quando una cosa mi ha infastidito e questo è stato il modo in cui gli oggetti vengono istanziati.

Il livello dati e il livello dominio sembravano entrambi privi di problemi. Dati e modelli sono separati e utilizzano le interfacce per comunicare tra loro. Dal mio punto di vista il livello dati e la presentazione sono entrambi sugli "anelli esterni", cioè sullo stesso livello, ma ho pensato che dovrebbero essere completamente indipendenti. Tuttavia, in questo progetto, nel livello di presentazione avviene tutta l'istanziazione da tutti gli oggetti necessari. vengono passati al livello del dominio o addirittura al livello dati. (questo succede su TownshipListActivity.java se sei curioso)

Questo mi sembra poco sensato. Finiresti per accoppiare la tua vista con il tuo livello dati. Sì, sono d'accordo sul fatto che il livello del dominio sia ancora selvaggio e libero, ma è corretto?

Altrimenti dove dovrebbero essere creati? Nella mia applicazione ho iniziato a giocare con l'idea di avere un oggetto contesto che li crea tutti ma in qualche modo questo mi sembra anche strano ...

    
posta fditz 20.07.2017 - 13:04
fonte

1 risposta

3

L'autore di quel post del blog utilizza il Model View Presenter (MVP) approccio alla progettazione per la loro applicazione. Non ho fatto molto con lo sviluppo di Android, ma se l'interfaccia utente non offre il collegamento dinamico degli elementi dell'interfaccia utente al modello, MVP è l'approccio appropriato. Di conseguenza il tuo View è strettamente accoppiato al modello e non c'è modo di aggirare questo.

Ci sono altri modi per far funzionare l'interfaccia utente, ma richiedono il supporto dell'API per questo, vale a dire la possibilità di associare dinamicamente i tuoi dati. Sia Angular che WPF hanno un legame dinamico della vista con il modello e ciò che chiamano "modello di vista". L'associazione dinamica dichiara solo che l'interfaccia utente prevede un oggetto con una proprietà esposta da un determinato nome. Non importa se si tratta di un foo o di un bar. Lo schema utilizzato è Model-View-ViewModel .

Ad un certo punto, almeno logicamente, la tua interfaccia utente dovrà essere abbinata al tuo modello. Utilizzare un approccio consolidato per ridurre al minimo l'accoppiamento a un livello, se possibile, aiuta. La linea di fondo è che l'architettura pulita è un buon ideale a cui aspirare, ma è un caso in cui il perfetto è il nemico del bene - o talvolta persino utile.

Raccomando di scrivere la tua applicazione il più pulito che puoi, ma non rimanere impiccato a essere perfetto con esso. Quando hai il tuo prodotto minimamente redditizio, guarda cosa hai creato e prova a capire se c'è un modo per ripulire tutto. Se hai colpito un'illuminazione, provalo. Poi vedi se l'epifania rende le cose migliori dal punto di vista della capacità di comprendere il codice, eseguire il debug del codice o modificare l'applicazione.

Probabilmente riuscirai ad andare oltre la tua prima pugnalata, ma colpirai un punto in cui rincorrere l'ideale peggiora le cose.

    
risposta data 20.07.2017 - 14:51
fonte

Leggi altre domande sui tag