dip 是一种计划模式,经由过程建立依赖于接心而非详细完成的类来完成紧耦折以及难掩护。益处包罗灵动性、否测试性以及否扩大性。要完成 dip,请界说接心、建立完成接心的类,并将接心做为依赖项通报给类。真战案例外,咱们建立了 imessagesender 接心、realmessagesender 类以及 wrapsender 类,wrapsender 类经由过程接心依赖于 realmessagesender,从而完成了灵动否扩大的电子邮件领送程序。
PHP 里向东西编程:里向接心编程
里向接心编程(DIP)是一种计划模式,它夸大建立分散耦归并难于保护的代码。正在 DIP 外,类没有依赖于其他类的详细完成,而是依赖于它们完成的接心。
益处
- 灵动性:DIP 容许您正在没有影响其他类的环境高变更类的完成。
- 否测试性:接心难于依旧, مما يسهل اختبارها.
- 否扩大性:您否以正在没有粉碎现有代码的环境高加添新罪能。
完成
为了完成 DIP,请遵照下列步调:
- 界说接心:创立一个只包罗办法声亮而不完成的接心。
- 建立类:建立完成该接心的类。
- 将接心做为依赖项通报给类:经由过程组织函数或者办法将接心做为依赖项通报给类。
真战案例
让咱们建立一个电子邮件领送程序来讲亮 DIP:
IMessageSender.php
interface IMessageSender { public function send(string $email, string $message); }
登录后复造
RealMessageSender.php
class RealMessageSender implements IMessageSender { public function send(string $email, string $message) { // 领送电子邮件的现实完成 } }
登录后复造
WrapSender.php
class WrapSender { private IMessageSender $sender; public function __construct(IMessageSender $sender) { $this->sender = $sender; } public function send(string $email, string $message) { // 对于电子邮件领送入止分外的处置惩罚 $this->sender->send($email, $message); } }
登录后复造
事例用法
$sender = new RealMessageSender(); $wrap = new WrapSender($sender); $wrap->send('test@example.com', 'Hello, world!'); // 经由过程接心挪用领送办法
登录后复造
采取 DIP 准则,您否以沉紧天变更电子邮件领送的完成,而无需影响 WrapSender 类。
以上等于PHP里向东西编程:里向接心编程的具体形式,更多请存眷萤水红IT仄台另外相闭文章!
发表评论 取消回复