2010-09-07 6 views
5

Sfondo dell'interrogazioneIl diagramma di classe UML di Zend_Log è corretto?

Analisi del Zend_Log rivela seguente diagramma classi

Zend_Log:

  • utilizza ReflectionClass & Zend_Log_Exception
  • sostiene riferimento alla matrice di Zend_Log_Writer_Abstract
  • sostiene ref erenze a matrice di Zend_Log_Filter_Interface

Zend_Log_Writer_Abstract

  • sostiene riferimento alla matrice di Zend_Log_Filter_Interface
  • sostiene riferimento Zend_Log_Formatter_Interface

alt text

Domande

  1. Zend_Log_Filter_Interface riferisce con Zend_Log_Filter_Suppress, Zend_Log_Filter_Message & Zend_Log_Filter_Priority come rappresentato, è questo correttamente disposti in Diagramma di classe?
  2. Va bene dire che Zend_Log contiene un riferimento alla matrice di Zend_Log_Filter_Interface e questa è la relazione di composizione (analogamente a Zend_Log_Writer_Abstract)?
  3. Come è ovvio che Zend_Log_Filter_Interface è contenuto sia Zend_Log & Zend_Log_Writer_Abstract, mentre Zend_Log contiene Zend_Log_Writer_Abstract, che rende Zend_Log_Filter fa riferimento sia contenitore (Zend_Log) e conteneva (Zend_Log_Writer_Abstract); è che alcuni "Design Pattern", se sì, qual è il nome?

Saluti!

+1

Diagrammi come questi dovrebbero essere parte della documentazione ufficiale, aiutano molto. Una volta confermato, vai a dire a qualcuno ufficiale! – chelmertz

+0

Bello! Lo hai fatto manualmente? – stefgosselin

+0

@stefgosselin Grazie. Ho usato NClass e creato manualmente il diagramma – r0ash

risposta

2
  1. Zend_Log_Filter_Suppress, Zend_Log_Filter_Message e Zend_Log_Filter_Priority tutto implementare l'interfaccia Zend_Log_Filter_Interface. Questo è denotato usando la freccia vuota e le linee tratteggiate tra di loro. Lo stesso vale per Zend_Log_Formatter_Interface e le tre classi illustrate sotto di esso.

  2. Sì, è corretto. È possibile discutere se utilizzare un'associazione (->) o una composizione in quanto due istanze Zend_Log potrebbero condividere una singola istanza Zend_Log_Writer_Db. Poiché gli scrittori e i filtri determinano il comportamento generale del registro, la composizione ha senso per me.

  3. Ogni istanza di registro può scrivere su più autori. I messaggi vengono prima filtrati dal log stesso e ogni messaggio che passa viene inviato a ogni writer. Ogni scrittore filtra anche i messaggi in arrivo. Ciò consente di ignorare tutti i messaggi sotto la priorità WARN (a livello di registro) che vengono scritti in un file e limitare ulteriormente la registrazione del database a quelli al livello FATAL.È possibile ottenere lo stesso risultato facendo cadere l'array del filtro a livello log, ma richiederebbe la duplicazione del filtro in ogni writer.