Должен ли я использовать делегирование здесь? - PullRequest
0 голосов
/ 12 мая 2009

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

Мне интересно

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 Ответ

1 голос
/ 12 мая 2009

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

Сами регистраторы могли бы реализовать схему цепочки ответственности

...