2010-09-07 64 views
5

背景问题的Zend_Log的UML类图是否正确?

Zend_Log进行的分析揭示出下面的类图

Zend_Log进行:

  • 使用ReflectionClass & Zend_Log_Exception
  • 保持参考Zend_Log_Writer_Abstract的阵列
  • 保持REF erences到Zend_Log_Filter_Interface接口的阵列

Zend_Log_Writer_Abstract

  • 保持参照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如所描绘的,这是正确的类图布局?
  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

这些图表应该是官方文档的一部分,它们有很多帮助。一旦你确认了,就去告诉有关官员吧! – chelmertz 2010-09-07 16:25:59

+0

不错!你是否手动执行此操作? – stefgosselin 2011-05-20 11:37:42

+0

@stefgosselin谢谢。我已经使用NClass并手动创建图 – r0ash 2011-05-25 11:47:42

回答

2
  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级别的日志。您可以通过删除日志级别过滤器数组来完成相同的效果,但是它需要在每个写入器中重复过滤。