如果两个对象相互引用,是不是代码不好的标志?


If two object refers to each other, is that a sign of bad code?

给出以下代码:

class EmailHander
{
    public $mailer;
    public function __construct()
    {
        $mailer = new PHPMailer();
    }
    public function getEmail ($name)
    {
        return new EmailTemplate ($name, $this);
    }
}
class EmailTemplate
{
    public $body, $subject, $handler;
    public __construct ($name, EmailHander $handler)
    {
        require ($name.'.html');
        $this->handler = $handler;
    }
    public function send ($target)
    {
        $this->handler->mailer->send ($target, ......);
    }
}

有一个处理邮件者的EmailHandler和许多代表邮件的EmailTemplates

$handler = new EmailHandler();
$email = $hander->getEmail ('subScribe');
$email->send('x@y.com');

但这可能是坏的。EmailHandler生成EmailTemplate。但是EmailTemplate指的是EmailHandler,所以这是一个循环,这是好还是坏?

这段代码中没有循环依赖。从电子邮件到它的处理器是单向依赖的;处理程序设置依赖关系并不重要。