依赖、依赖注入与控制反转 笔记
依赖
功能:人看用iphone12手机打开bilibili看视频。
class People {
public function watchVideo() {
// People类依赖iPhone12类
(new iPhone12())->openApp('bilibili')
}
}
class iPhone12 {
public function openApp($name) {
echo __CLASS__ . '打开' . $name;
}
}
(new People())->watchVideo();
依赖注入(DI )与控制反转(IoC)
interface IntelligencePhone {
public function openApp($name);
}
class iPhone12 implements IntelligencePhone {
public function openApp($name) {
echo __CLASS__ . '打开' . $name;
}
}
class Mi11 implements IntelligencePhone {
public function openApp($name) {
echo __CLASS__ . '打开' . $name;
}
}
class People {
public function watchVideo(IntelligencePhone $phone){
// 用什么手机看 bilibili 由外部实现。
// 这样控制权移到了类实现的外部就叫做控制反转
$phone->openApp('bilibili')
}
}
// 把iPhone12和Mi11传到People 依赖注入
(new People())->watchVideo(new iPhone12()); // 用 iPhone12打开 bilibili
(new People())->watchVideo(new Mi11()); //用 Mi11 打开 bilibili
来源
本作品采用《CC 协议》,转载必须注明作者和本文链接
说的很明白 赞一个