DIP(Dependency Inversion): DIP는 전통적인 소프트웨어 설계에서 상위 계층 코드가 하위 계층에 따라 달라지며, 상위 계층 코드도 변경되기 쉽습니다. DIP 설계 아이디어에서는 정의가 필요하며 상위 계층 인터페이스를 정의하고 하위 계층이 이 인터페이스를 구현하여 결합 정도를 줄입니다.
제어 반전(IOC): IOC는 상위 계층이 의존하는 하위 계층을 제3자에 의해 구현되도록 남겨두는 DIP의 구체적인 아이디어입니다. 즉, 카테고리 A에서 필요한 외부 자원 C를 확보하려는 이니셔티브입니다. 이러한 상황이 호출됩니다. 그렇다면 반전은 무엇인가? 즉, 클래스 A는 더 이상 C를 적극적으로 획득하지 않고 IoC/DI 컨테이너가 C의 인스턴스를 획득할 때까지 수동적으로 기다린 다음 이를 역으로 클래스 A에 주입합니다.
종속성 주입(DI): DI는 다른 클래스에 의존하는 클래스의 인스턴스화를 클래스의 외부 구현으로 이동시키는 IOC의 디자인 패턴입니다.
종속성 주입은 다음을 구현합니다.
1. 인터페이스 또는 추상 클래스 정의(이메일 보내기의 예)
interface Mail{ public function send(); }
2 다양한 유형의 전송이 인터페이스를 구현합니다.
class Email implements Mail() { public function send() { //发送Email } }
class SmsMail implements Mail() { public function send() { //发送短信 } }
3 .
__construct( ->_mailObj = ->_mailObj->send();
<span style="color: #008000"><br/>$reg = new Register();<br/>$emailObj = new Email();<br/>$smsObj = new SmsMail();<br/><br/>$reg->doRegister($emailObj);//使用email发送<br/>$reg->doRegister($smsObj);//使用短信发送<br/></span>
위 내용은 의존성 주입이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!