Zend framework Zend_日志的UML类图正确吗?

Zend framework Zend_日志的UML类图正确吗?,zend-framework,class,uml,class-diagram,zend-log,Zend Framework,Class,Uml,Class Diagram,Zend Log,问题背景 Zend_日志的分析揭示了以下类图 Zend\u日志: 使用ReflectionClass&Zend\u日志\u异常 维护对Zend_Log_Writer_摘要数组的引用 维护对Zend_Log_Filter_接口数组的引用 Zend\u Log\u Writer\u Abstract 维护对Zend_Log_Filter_接口数组的引用 维护对Zend_Log_Formatter_接口的引用 问题 Zend_Log_Filter_接口与Zend_Log_Filter_抑制、

问题背景

Zend_日志的分析揭示了以下类图

Zend\u日志:

  • 使用ReflectionClass&Zend\u日志\u异常
  • 维护对Zend_Log_Writer_摘要数组的引用
  • 维护对Zend_Log_Filter_接口数组的引用
Zend\u Log\u Writer\u Abstract

  • 维护对Zend_Log_Filter_接口数组的引用
  • 维护对Zend_Log_Formatter_接口的引用

问题

  • Zend_Log_Filter_接口与Zend_Log_Filter_抑制、Zend_Log_Filter_消息和Zend_Log_Filter_优先级相关,如图所示,这在类图中是否正确布局
  • 可以这样说吗,Zend_日志包含对Zend_日志过滤器接口数组的引用,这是组合关系(类似于Zend_日志编写器摘要)
  • 很明显,Zend_Log_Filter_接口同时包含Zend_Log和Zend_Log_Writer_Abstract,而Zend_Log包含Zend_Log_Writer_Abstract,这使得Zend_Log_Filter被容器(Zend_Log)和包含(Zend_Log_Writer_Abstract)引用;这是某种“设计模式”吗?如果是,名称是什么
  • 问候

  • Zend\u Log\u Filter\u Suppress
    Zend\u Log\u Filter\u Message
    ,以及
    Zend\u Log\u Filter\u Priority
    都实现了
    Zend\u Log\u Filter\u接口。这用空箭头和它们之间的虚线表示。对于
    Zend\u Log\u Formatter\u接口
    和下面描述的三个类也是如此

  • 是的,没错。此处是否使用关联(->)或组合可能会引起争论,因为两个
    Zend_Log
    实例可以共享一个
    Zend_Log_Writer_Db
    实例。由于编写器和过滤器决定了日志的整体行为,所以对我来说,组合是有意义的

  • 每个日志实例都可以写入多个写入程序。消息首先由日志本身过滤,传递的任何消息都会传递给每个编写器。每个编写器也会过滤传入的消息。这允许您忽略
    WARN
    优先级(在日志级别)以下的所有写入文件的消息,并进一步将数据库日志记录限制为
    FATAL
    级别的消息。您可以通过删除日志级过滤器阵列来实现相同的效果,但这需要在每个编写器中复制过滤


  • 像这样的图表应该是官方文档的一部分,它们帮助很大。一旦你得到确认,就去告诉某个官员!美好的你是手工做的吗?@stefgosselin谢谢。我已经使用了NClass并手动创建了该图