繁体   English   中英

Zend_Log的UML类图是否正确?

[英]Is UML Class Diagram of Zend_Log correct?

问题的背景

Zend_Log的分析揭示了以下类图

Zend_Log进行:

  • 使用ReflectionClass和Zend_Log_Exception
  • 维护对Zend_Log_Writer_Abstract数组的引用
  • 维护对Zend_Log_Filter_Interface数组的引用

Zend_Log_Writer_Abstract

  • 维护对Zend_Log_Filter_Interface数组的引用
  • 维护对Zend_Log_Formatter_Interface的引用

替代文字

问题

  1. Zend_Log_Filter_Interface与Zend_Log_Filter_Suppress,Zend_Log_Filter_Message和Zend_Log_Filter_Priority有关,如图所示,这是否在Class Diagram中正确布局?
  2. 可以这么说,Zend_Log包含对Zend_Log_Filter_Interface数组的引用,这是组合关系(类似于Zend_Log_Writer_Abstract)?
  3. 很明显,Zend_Log_Filter_Interface包含在Zend_Log和Zend_Log_Writer_Abstract中,而Zend_Log包含Zend_Log_Writer_Abstract,这使Zend_Log_Filter被容器(Zend_Log)和包含(Zend_Log_Writer_Abstract)引用; 是一些“设计模式”,如果是的话是什么名字?

问候!

  1. Zend_Log_Filter_SuppressZend_Log_Filter_MessageZend_Log_Filter_Priority都实现了Zend_Log_Filter_Interface接口。 这用空箭头和它们之间的虚线表示。 Zend_Log_Formatter_Interface和下面描述的三个类也是如此。

  2. 对,那是正确的。 由于两个Zend_Log实例可以共享一个Zend_Log_Writer_Db实例,因此可以讨论是否在此使用关联( - >)或组合。 由于编写器和过滤器决定了日志的整体行为,因此组合对我来说很有意义。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM