In questo caso, si tratta dei metodi di produzione , come indicato in my comment.
vedere la specifica API pertinenti sulle Logger
Recuperare un logger di nome in base al valore del parametro nome. Se il logger nominato esiste già, verrà restituita l'istanza esistente. Altrimenti, viene creata una nuova istanza.
Per impostazione predefinita, i logger non hanno un livello impostato ma lo ereditano dal loro antenato neareast con un livello impostato. Questa è una delle caratteristiche principali di log4j.
Il factory method pattern è un design pattern creazionale, e, secondo Wikipedia, è spesso utile nelle seguenti situazioni:
Il modello di fabbrica può essere utilizzata quando:
- La creazione di un oggetto preclude il suo riutilizzo senza significativa duplicazione del codice.
- La creazione di un oggetto richiede l'accesso a informazioni o risorse che non devono essere contenute nella classe di composizione.
- La gestione a vita degli oggetti generati deve essere centralizzata per garantire un comportamento coerente all'interno dell'applicazione.
Tutti e tre di questi sono applicabili qui ... chissà che tipo di lavoro va in ricerca del logger corretto? Non sei davvero interessato a creare un nuovo logger ogni volta che vuoi usarne uno ... invece, il tuo obiettivo principale è proprio questo: per usa uno uno.
La scorta Wiki ha anche un relevant article,
metodi di fabbrica sono a volte utilizzati al posto dei costruttori per diverse ragioni:
- Alcune lingue (come Java) non consentono costruttori per avere nomi utili
- Alcuni linguaggi (come Java) non consentono ai costruttori di avere nomi diversi (che possono essere necessari se si desidera utilizzare la stessa firma di metodo per due costruttori)
- Per consentire la stessa istanza per essere riutilizzato, invece di ricreare ogni volta che è necessario (vedi FlyweightPattern)
penso che la terza opzione è probabilmente il più applicabile qui. Utilizzando la creazione manuale di un nuovo Logger
, non è possibile condividerli adeguatamente. L'utilizzo della facciata getLogger
abilita questo in modo trasparente.
Tutto sommato, l'uso di metodi di produzione è in genere per consentire un codice più lineare più pulito senza esporre il lavoro che non ti interessa.
[Modello metodo di fabbrica] (http://en.wikipedia.org/wiki/Factory_method_pattern) – oldrinb
'Logger.getLogger' chiama' nuovo Logger' internamente. C'è sempre una chiamata al costruttore da qualche parte - solo che non sempre nel * tuo * codice. – Blorgbeard
WOW questo ha un sacco di risposte in breve tempo ... – Doorknob