>백엔드 개발 >PHP 튜토리얼 >PHP 디자인 패턴 프록시 프록시 모드

PHP 디자인 패턴 프록시 프록시 모드

WBOY
WBOY원래의
2016-07-29 08:45:48934검색

에이전트는 캐릭터가 다른 캐릭터를 대신하여 행동하는 것을 의미합니다. 인생에서와 마찬가지로 와인 제조업체는 와인을 소매 고객에게 직접 판매하지 않고 에이전트를 통해 판매를 완료합니다. 고객은 레드와인을 마시기 위해 여기저기 공장을 찾아다닐 필요가 없고, 레드와인 공장의 구체적인 위치를 신경쓰지 않고 현지 생산업체를 찾기만 하면 된다. 대리인이 그를 위해 처리할 것입니다.
프록시 모드는 특정 객체에 대한 프록시 객체를 제공하는 것이며, 프록시 객체는 특정 객체의 참조를 제어합니다.
프록시 패턴과 관련된 역할:
추상 테마 역할은 프록시 테마와 실제 테마 사이의 공개 인터페이스를 선언하므로 실제 테마가 필요한 모든 위치를 프록시 테마로 대체할 수 있습니다.
프록시 테마 역할에는 실제 테마에 대한 참조가 포함되어 있어 언제든지 실제 테마를 조작할 수 있습니다. 프록시 테마 기능은 실제 테마와 동일한 인터페이스를 제공하므로 언제든지 실제 테마를 대체할 수 있습니다. 시간. 실제 주제에 대한 참조를 보유함으로써 프록시 주제는 실제 주제의 생성 또는 삭제를 제어할 수 있을 뿐만 아니라 실제 주제가 호출되기 전에 가로채거나 호출 후에 특정 작업을 수행할 수도 있습니다.
실제 프록시 개체는 프록시 역할이 나타내는 특정 개체를 정의합니다.
코드 참조:

코드 복사 코드는 다음과 같습니다:


/**
* 프록시 패턴
*
* 이 객체에 대한 액세스를 제어하기 위해 다른 객체에 대한 프록시 제공
*
*/
인터페이스 프록시
{
공용 함수 request();
공용 함수 display()
}
class RealSubject
{
공개 함수 요청()
{
echo "RealSubject 요청
"
}
공개 함수 표시()
{
echo "RealSubject 표시
";
}
}
class ProxySubject
{
private $_subject = null;
public function __construct()
{
$this-> ;_subject = new RealSubject ();
}
공개 함수 요청()
{
$this->_subject->request()
}
공개 함수 표시 ()
{
$this->_subject->display();
}
}
$objProxy = new ProxySubject()
$objProxy->request ();
$objProxy->display();


프록시 모드 작동 방식: 첫째, 프록시 주체와 실제 주체 모두 공통 인터페이스를 구현하므로 이를 통해 다음을 수행할 수 있습니다. 변경하지 않고 원래 인터페이스를 변경합니다. 이 경우 실제 테마 개체가 사용되는 곳마다 프록시 테마를 대신 사용할 수 있습니다. 둘째, 프록시 주제는 클라이언트와 실제 주제 사이에서 중개 역할을 합니다. 이 중개 플랫폼을 사용하면 고객 요청을 실제 주제에 전달하기 전에 필요한 몇 가지 전처리를 수행할 수 있습니다.
프록시 모드를 사용하는 또 다른 매우 일반적인 예는 큰 이미지의 탐색을 제어하는 ​​것입니다. 일반 웹사이트에서 그래픽 정보를 탐색할 때 사진의 위치가 축소된 것을 발견하셨는지 궁금합니다. 누군가 사진을 주의 깊게 보고 싶을 때 사진을 클릭하면 링크가 활성화됩니다. 이미지를 보려면. 모든 사람이 상세 이미지의 정보를 볼 필요는 없기 때문에 탐색 속도 향상에 매우 좋습니다. 이 상황은 프록시 모드를 사용하여 완전히 실현될 수 있습니다. 여기서는 제 생각을 표현하겠습니다. 작업상의 이유로 구현에 대해서는 표현하지 않겠습니다. B/S 모드에서 이 방법의 실제 타당성에 대해서는 아직 확인하지 않았습니다. 이것이 실현 가능한 방법이 아니라면 이 예제는 C/S에서 구현될 수 있습니다. 이는 전혀 문제가 되지 않으며 디자인 패턴을 소개하는 많은 책과 기사에서 사용됩니다. 두 메소드의 구현에 관심이 있다면 시도해 볼 수 있습니다 :)
브라우저에서 웹 페이지에 액세스할 때 이미지를 로드하는 실제 메소드가 아니라 프록시 객체의 메소드를 호출합니다. 이 객체는 먼저 스레드를 사용하여 축소된 버전의 이미지를 브라우저에 로드하고, 백그라운드에서 다른 스레드를 사용하여 큰 이미지를 로드하는 실제 메서드를 호출하여 이미지를 로컬로 로드합니다. 웹페이지에 새로 표시되는 곳에 넣으세요. 물론 탐색하려고 할 때 이미지가 성공적으로 로드되지 않은 경우 다른 스레드를 시작하여 이미지가 성공적으로 로드될 때까지 프롬프트 메시지를 표시할 수 있습니다.
이런 식으로 프록시 모드의 기능이 위에서 생생하게 반영됩니다. 실제 사진의 로딩은 프록시를 통해 배경에 배치되므로 전경에서의 탐색에는 영향을 미치지 않습니다.
프록시 모드는 발신자와 수신자를 조정할 수 있으며 시스템의 결합을 어느 정도 줄일 수 있습니다. 그러나 앞서 언급한 프록시 모드를 사용하기 위한 조건을 기억해야 합니다. 그렇지 않으면 프록시 모드를 사용하면 좋은 결과를 얻을 수 없을 뿐만 아니라 문제가 발생할 수도 있습니다.

위에서 내용의 측면을 포함하여 PHP 디자인 패턴 프록시 프록시 모드를 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.