이 기사는 PHP의 어댑터 모드에 대한 자세한 분석을 제공합니다(코드 포함). 필요한 친구가 참고할 수 있기를 바랍니다.
어댑터 패턴(PHP 구현)
e.g.
//대상 역할
1. 인터페이스에는 여러 메소드가 있습니다
//소스 역할
1 일부 부분 메소드만 있습니다
//어댑터 역할
1 .소스 역할의 기존 메소드 호출
2. 클라이언트를 추가하고 다른 메소드가 필요하도록 조정
//Client
1. 소스 역할을 인스턴스화합니다
3. 생성자 메서드를 주입
어댑터 패턴: 한 클래스의 인터페이스를 고객이 기대하는 다른 클래스의 인터페이스로 변환합니다. 어댑터를 사용하면 원래 호환되지 않는 인터페이스가 있는 클래스가 원활하게 함께 작동할 수 있습니다.
[어댑터 패턴의 주요 역할]
Target(Target) 역할: 클라이언트가 사용하는 특정 도메인과 관련된 인터페이스를 정의하는데, 이는 우리가 기대하는 것입니다.
Source(Adaptee) 역할: 인터페이스 적응 필요
어댑터(어댑터) 역할: Adaptee 인터페이스와 대상 인터페이스를 조정합니다. 어댑터는 소스 인터페이스를 대상 인터페이스로 변환합니다.
실제로는 집 벽에 2포트 소켓(Adaptee)이 있는데 3포트가 필요한 선풍기(Target)를 구입하셨다는 뜻입니다. 이 경우 콘센트(어댑터)가 필요합니다. .
클래스 어댑터는 바람직하지 않은 높은 결합을 가져오는 "다중 상속" 구현 방법을 채택하므로 일반적으로 사용하지 않는 것이 좋습니다. 객체 어댑터는 느슨한 결합의 정신에 더 부합하는 "객체 결합" 방법을 채택합니다.
클래스 어댑터는 상속을 사용합니다
예:
/** * 目标角色 */ interface Target { /** * 源类也有的方法1 */ public function sampleMethod1(); /** * 源类没有的方法2 */ public function sampleMethod2(); } /** * 源角色 */ class Adaptee { /** * 源类含有的方法 */ public function sampleMethod1() { echo 'Adaptee sampleMethod1 <br />'; } } /** * 类适配器角色 */ class Adapter extends Adaptee implements Target { /** * 源类中没有sampleMethod2方法,在此补充 */ public function sampleMethod2() { echo 'Adapter sampleMethod2 <br />'; } } class Client { /** * Main program. */ public static function main() { $adapter = new Adapter(); $adapter->sampleMethod1(); $adapter->sampleMethod2(); } }
객체 어댑터는 위임을 사용합니다
e.예:
/** * 目标角色 */ interface Target { /** * 源类也有的方法1 */ public function sampleMethod1(); /** * 源类没有的方法2 */ public function sampleMethod2(); } /** * 源角色 */ class Adaptee { /** * 源类含有的方法 */ public function sampleMethod1() { echo 'Adaptee sampleMethod1 <br />'; } } /** * 类适配器角色 */ class Adapter implements Target { private $_adaptee; public function __construct(Adaptee $adaptee) { $this->_adaptee = $adaptee; } /** * 委派调用Adaptee的sampleMethod1方法 */ public function sampleMethod1() { $this->_adaptee->sampleMethod1(); } /** * 源类中没有sampleMethod2方法,在此补充 */ public function sampleMethod2() { echo 'Adapter sampleMethod2 <br />'; } } class Client { /** * Main program. */ public static function main() { $adaptee = new Adaptee(); $adapter = new Adapter($adaptee); $adapter->sampleMethod1(); $adapter->sampleMethod2(); } }
관련 권장 사항:
php는 HTML 파일에 대한 클래스를 어떻게 생성합니까? PHP에서 HTML 파일 클래스를 생성하는 방법PHP 코드를 디버깅하는 방법은 무엇입니까? PHP 코드 디버깅 방법 요약(권장)위 내용은 PHP의 어댑터 패턴에 대한 자세한 분석(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!