이전 기사 "A Brief Talk on the Decorator Pattern in PHP"에서 PHP의 데코레이터 패턴을 소개했습니다. 이 기사에서는 PHP의 어댑터 패턴을 이해하는 데 도움이 됩니다.
이 모델에는 항상 매우 고전적인 예가 있었는데 바로 소켓입니다! 맞습니다. 해외에서 가전제품을 구매하거나 해외 출장을 갈 때, 우리나라의 전압 규격은 220V인 반면 다른 나라의 전압 규격은 110V이기 때문에 전원 어댑터가 필요한 경우가 많습니다. 그리고 이 전원 어댑터는 어댑터 모드의 상징입니다. 개체가 요구 사항을 충족하지 않으면 어댑터를 추가하세요! !
GoF 정의: 클래스의 인터페이스를 고객이 원하는 다른 인터페이스로 변환합니다. Adapter 패턴을 사용하면 호환되지 않는 인터페이스로 인해 원래 함께 작동할 수 없었던 클래스가 함께 작동할 수 있습니다.
GoF 클래스 다이어그램:Inherited
Combined
코드 구현interface Target{
function Request() : void;
}
구현 메서드가 있는 일반 클래스일 수도 있는 인터페이스 계약을 정의합니다(다음 예제에서는 클래스를 사용합니다)
class Adapter implements Target{ private $adaptee; function __constuct($adaptee){ $this->adaptee = $adaptee; } function Request() : void { $this->adaptee->SpecificRequest(); } }
어댑터는 Request() 메서드를 구현할 수 있도록 이 인터페이스 계약을 구현합니다. 실제로 call은 Adaptee 클래스의 메소드입니다
class Adaptee { function SpecificRequest() : void{ echo "I'm China Standard!"; } }어댑터는 두 가지 형태로 제공됩니다. 위의 클래스 다이어그램에 표시된 것처럼 우리 코드에서 구현된
풀 코드: 어댑터 모드
https:/ /github .com/zhangyue0503/designpatterns-php/blob/master/05.adapter/source/adapter.phpExample
전체 소스 코드: SMS 전송 어댑터 방법
https://github.com/zhangyue0503/designpatterns-php/blob/master/05.adapter/source/adapter- 메시지 .php<?php class Message{ public function send(){ echo "阿里云发送短信!" . PHP_EOL; } public function push(){ echo "阿里云发送推送!" . PHP_EOL; } } class JiguangSDKAdapter extends Message{ private $message; public function __construct($message){ $this->message = $message; } public function send(){ $this->message->send_out_msg(); } public function push(){ $this->message->push_msg(); } } class JiguangMessage{ public function send_out_msg(){ echo "极光发送短信!" . PHP_EOL; } public function push_msg(){ echo "极光发送推送!" . PHP_EOL; } } class BaiduYunSDKAdapter extends Message{ private $message; public function __construct($message){ $this->message = $message; } public function send(){ $this->message->transmission_msg(); } public function push(){ $this->message->transmission_push(); } } class BaiduYunMessage{ public function transmission_msg(){ echo "百度云发送短信!" . PHP_EOL; } public function transmission_push(){ echo "百度云发送推送!" . PHP_EOL; } } $jiguangMessage = new JiguangMessage(); $baiduYunMessage = new BaiduYunMessage(); $message = new Message(); // 原来的老系统发短信,使用阿里云 $message->send(); $message->push(); // 部分模块用极光发吧 $jgAdatper = new JiguangSDKAdapter($jiguangMessage); $jgAdatper->send(); $jgAdatper->push(); // 部分模块用百度云发吧 $bdAatper = new BaiduYunSDKAdapter($baiduYunMessage); $bdAatper->send(); $bdAatper->push();설명:
위 내용은 한 기사에서 PHP의 어댑터 패턴에 대해 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!