2009-05-12 3 views
0

Ich habe derzeit zwei Klassenhierarchien: eine für die Behandlung von Fehlern und eine andere für die Protokollierung.Soll ich Delegation hier verwenden?

Ich frage mich

1), ob es vorteilhaft ist, Fehler zu einer Klasse der Handhabung von der Fehlerbehandlung getrennt zu delegieren

Und

2) ob das, was ich habe ein gutes Design ist.

Hier ist, was ich habe:

class ErrorHandler { 
    public __construct(ErrorLogger $ErrorLogger) { 
    ... 
    $this->setErrorPageURL('/error.php'); 
    } 

    public function setErrorPageURL($errorPageURL); 

    public function handle() { 
    ... 
    $this->ErrorLogger->log($errorNumber, $errorMessage, $errorFile, $errorLine); 
    header("Location: $this->errorPageURL"); 
    } 
} 

class ErrorLogger { 
    abstract protected function log($errorNumber, $errorMessage, $errorFile, $errorLine); 

    // Overridable. 
    protected function getExtraLogMessage() { 
    return null; 
    } 
} 

class EmailerErrorLogger extends ErrorLogger { 
    public function __construct($toEmailAddress, $fromEmailAddress) { 
    ... 
    } 

    protected function log($errorNumber, $errorMessage, $errorFile, $errorLine) { 
    // collect error information and various pieces of information 
    mail(...); 
    } 
} 

register_shutdown_function(array(new ErrorHandler(new EmailerErrorLogger()), 'handle')); 

Antwort

1

Ich denke, diese Struktur Sinn macht, weil Ihre Fehlerhandler bestimmte andere Aufgaben zu erledigen hat als nur den Fehler zu protokollieren.

Die Logger selbst könnten die chain of responsibility pattern

implementieren