Является ли диаграмма классов UML Zend_Log корректной? - PullRequest
5 голосов
/ 07 сентября 2010

История вопроса

Анализ Zend_Log показывает следующую диаграмму классов

Zend_Log:

  • использует ReflectionClass& Zend_Log_Exception
  • поддерживает ссылку на массив Zend_Log_Writer_Abstract
  • поддерживает ссылки на массив Zend_Log_Filter_Interface

Zend_Log_Writer_Abstract 1023 * 10* поддерживает ссылку на массив Zend_Log_Filter_Interface

поддерживает ссылку на Zend_Log_Formatter_Interface

alt text

Вопросы

  1. Zend_Log_Filter_Interface связан с Zend_Log_Filter_Suppress, Zend_Log_Filter_Message & Zend_Log_Filter_Priority, как изображено, правильно ли это изложено на диаграмме классов?Zend_Log_Writer_Abstract)?
  2. Как это obvПри этом Zend_Log_Filter_Interface содержится в Zend_Log и Zend_Log_Writer_Abstract, а Zend_Log содержит Zend_Log_Writer_Abstract, что делает Zend_Log_Filter ссылкой на оба контейнера (Zend_Log) и содержится (Zend_Log_Wstracter_);это какой-то «Шаблон проектирования», если да, то как называется?

С уважением!

1 Ответ

2 голосов
/ 07 февраля 2011
  1. Zend_Log_Filter_Suppress, Zend_Log_Filter_Message и Zend_Log_Filter_Priority все реализуют интерфейс Zend_Log_Filter_Interface. Это обозначается с помощью пустой стрелки и пунктирных линий между ними. То же самое верно для Zend_Log_Formatter_Interface и трех классов, изображенных ниже.

  2. Да, это правильно. Использовать ли здесь ассоциацию (->) или композицию, можно обсудить, поскольку два экземпляра Zend_Log могут совместно использовать один экземпляр Zend_Log_Writer_Db. Поскольку авторы и фильтры определяют общее поведение журнала, состав имеет смысл для меня.

  3. Каждый экземпляр журнала может писать нескольким авторам. Сообщения сначала фильтруются самим журналом, и любое передаваемое сообщение отправляется каждому автору. Каждый писатель также фильтрует входящие сообщения. Это позволяет игнорировать все сообщения с приоритетом WARN (на уровне журнала), которые записываются в файл, и дополнительно ограничивает ведение журнала базы данных сообщениями на уровне FATAL. Этого же эффекта можно добиться, отбросив массив фильтров уровня журнала, но для этого потребуется дублирование фильтрации в каждом модуле записи.

...