2009-05-12 5 views
0

В настоящее время у меня есть две иерархии классов: одна для обработки ошибок и другая для их регистрации.Должен ли я использовать делегацию здесь?

Я задаюсь

1) является ли это выгодно делегировать обработку ошибок в классе отдельно от обработчика ошибок

И

2) является ли то, что у меня есть хороший дизайн.

Вот что у меня есть:

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')); 

ответ

1

Я думаю, что эта структура имеет смысл, потому что ваш обработчик ошибок должен сделать некоторые другие работы, чем просто протоколирование ошибки.

Регистраторы сами могут реализовать chain of responsibility pattern

Смежные вопросы