Domanda

Quali sono le caratteristiche più importanti che un contenitore IOC dovrebbe contenere? Puoi facilmente creare contenitori in 15 righe di codice , ma cosa dovrebbe includere per essere "utile"? in un progetto?

È stato utile?

Soluzione

Questo è un argomento piuttosto ampio e dato a molta soggettività, ma cercherò di rispondere da un punto di vista molto pragmatico. Dati i progetti a cui ho lavorato e la mia esperienza con l'IoC, direi che ci sono almeno tre biggie da cercare in termini di utilità.

  1. Configurazione : qualsiasi IoC che usi deve avere una posizione centrale che ti consenta di configurare il comportamento di quel contenitore. Che si tratti di un file di configurazione o di un bel set di chiamate API che possono essere racchiuse in una classe globale da qualche parte, se il contenitore non è facilmente configurabile, sarà un mal di testa.
  2. Gestione della vita : vuoi davvero un contenitore che abbia la capacità di consentire varie vite degli oggetti. Potresti desiderare che un determinato oggetto ottenga sempre un nuovo IPersonCreator, ma desideri un solo servizio IPerson in qualsiasi momento.
  3. Iniezione automatica delle dipendenze - Ok, quindi Iniezione delle dipendenze è il concetto su cui l'IoC è costruito sopra, ma non devi gestirlo tu stesso. L'idea qui è che se chiedi un IPersonCreator per la prima volta, dovrebbe risolvere automaticamente tutte le sue dipendenze, le loro dipendenze e così via.

Nel complesso, ciò di cui hai bisogno dipende dal progetto, ma ci sono diversi contenitori là fuori che si adattano perfettamente alle tue esigenze.

Altri suggerimenti

In ordine decrescente di importanza:

  1. Consenti almeno l'iniezione del setter e del costruttore,
  2. Separa la configurazione dal codice,
  3. Consenti diversi stili di configurazione (XML o annotazioni),

Questi richiederanno più di 15 righe di codice, ma per me sembrano fondamentali.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top