栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP中的多重继承

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP中的多重继承

Alex,大多数时候,您需要多重继承是一个信号,表明您的对象结构有些不正确。在您概述的情况下,我看到您的班级职责范围太广。如果Message是应用程序业务模型的一部分,则不应考虑呈现输出。相反,您可以划分责任并使用MessageDispatcher来发送使用文本或html后端传递的消息。我不知道您的代码,但是让我这样模拟:

$m = new Message();$m->type = 'text/html';$m->from = 'John Doe <jdoe@yahoo.com>';$m->to = 'Random Hacker <rh@gmail.com>';$m->subject = 'Invitation email';$m->importBody('invitation.html');$d = new MessageDispatcher();$d->dispatch($m);

这样,您可以向Message类添加一些特殊化:

$htmlIM = new InvitationHTMLMessage(); // html type, subject and body configuration in constructor$textIM = new InvitationTextMessage(); // text type, subject and body configuration in constructor$d = new MessageDispatcher();$d->dispatch($htmlIM);$d->dispatch($textIM);

请注意,MessageDispatcher将根据

type
传递的Message对象中的属性来决定是以HTML还是纯文本形式发送。

// in MessageDispatcher classpublic function dispatch(Message $m) {    if ($m->type == 'text/plain') {        $this->sendAsText($m);    } elseif ($m->type == 'text/html') {        $this->sendAsHTML($m);    } else {        throw new Exception("MIME type {$m->type} not supported");    }}

总结起来,责任分为两类。消息配置在InvitationHTMLMessage /
InvitationTextMessage类中完成,并将发送算法委托给调度程序。这称为策略模式,您可以在此处阅读更多内容。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号