백엔드 개발 PHP 튜토리얼 php设计模式 Proxy (代理模式)_php技巧

php设计模式 Proxy (代理模式)_php技巧

May 17, 2016 am 09:17 AM
PHP 디자인 패턴 proxy 프록시 모드

代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务。而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行了,具体红酒工厂在那里,客户不用关心,代理会帮他处理。

代理模式,就是给某一对象提供代理对象,并由代理对象控制具体对象的引用。

代理模式涉及的角色:

抽象主题角色,声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替。
代理主题角色,含有真实主题的引用,从而可以在任何时候操作真实主题,代理主题功过提供和真实主题相同的接口,使它可以随时代替真实主题。代理主题通过持有真实主题的引用,不但可以控制真实主题的创建或删除,可以在真实主题被调用前进行拦截,或在调用后进行某些操作。
真实代理对象,定义了代理角色所代表的具体对象。
参考一下代码:

复制代码 代码如下:

/**
* 代理模式
*
* 为其他对象提供一个代理以控制这个对象的访问
*
*/
interface Proxy
{
public function request();
public function display();
}

class RealSubject
{
public function request()
{
echo "RealSubject request
";
}

public function display()
{
echo "RealSubject display
";
}
}

class ProxySubject
{
private $_subject = null;
public function __construct()
{
$this->_subject = new RealSubject();
}

public function request()
{
$this->_subject->request();
}

public function display()
{
$this->_subject->display();
}
}

$objProxy = new ProxySubject();
$objProxy->request();
$objProxy->display();

代理模式的工作方式:首先,因为代理主题和真实主题都实现了共同的接口,这使我们可以在不改变原来接口的情况下,只要用真实主题对象的地方,都可以用代理主题来代替。其次,代理主题在客户和真实主题之间起了一个中介作用,利用这个中介平台,我们可以在把客户请求传递给真实主题之前做一些必要的预处理。

还有一个很常见的代理模式的使用例子就是对大幅图片浏览的控制。在我们常见的网站上面浏览图文的信息时,不知道你有没有注意到,图片位置放置的是经过缩小的,当有人要仔细的查看这个图片时,可以通过点击图片来激活一个链接,在一个新的网页打开要看的图片 。这样对于提高浏览速度是很有好处的,因为不是每个人都要去看仔细图上的信息。这种情况就可以使用代理模式来全面实现。这里我将思路表述出来,至于实现由于工作原因,就不表述了,至于这种方式在B/S模式下的真实可行性,我没有确认过,只是凭空的想象。如果不是可行的方式,那这个例子可以放到一个C/S下来实现,这个是绝对没有问题的,而且在很多介绍设计模式的书和文章中使用。两种方式的实现有兴趣的可以来尝试一下:)

我们在浏览器中访问网页时是调用的不是真实的装载图片的方法,而是在代理对象中的方法,在这个对象中,先使用一个线程向浏览器装载了一个缩小版的图片,而在后台使用另一个线程来调用真实的装载大图片的方法将图片加载到本地,当你要浏览这个图片的时候,将其在新的网页中显示出来。当然如果在你想浏览的时候图片尚未加载成功,可以再启动一个线程来显示提示信息,直到加载成功。

这样代理模式的功能就在上面体现的淋漓尽致——通过代理来将真实图片的加载放到后台来操作,使其不影响前台的浏览。

代理模式能够协调调用者和被调用者,能够在一定程度上降低系统的耦合度。不过一定要记住前面讲的使用代理模式的条件,不然的话使用了代理模式不但不会有好的效果,说不定还会出问题的。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Nginx Proxy Manager 구성 분석 및 최적화 Nginx Proxy Manager 구성 분석 및 최적화 Sep 26, 2023 am 09:24 AM

NginxProxyManager 구성 분석 및 최적화 개요: NginxProxyManager는 Nginx 기반의 역방향 프록시 관리 도구로 역방향 프록시 서버를 쉽게 구성하고 관리하는 데 도움이 됩니다. NginxProxyManager를 사용하는 과정에서 서버 구성을 분석하고 최적화하여 서버의 성능과 보안을 향상시킬 수 있습니다. 구성 분석: 구성 파일 위치 및 구조: NginxProxyManag

nginx에서 프록시 프로토콜을 구성하고 사용하는 방법 nginx에서 프록시 프로토콜을 구성하고 사용하는 방법 May 18, 2023 am 08:47 AM

nginx에서 프록시 프로토콜을 사용하는 경우 nginx는 웹 서버이자 프록시 서버라는 것을 알고 있습니다. 일반적으로 클라이언트는 프록시 서버 또는 로드 밸런싱 소프트웨어(Haproxy, Amazon Elastic LoadBalancer(ELB)) 뒤에서 작동합니다. 그런 다음 nginx로 실제 웹 액세스를 수행합니다. 여러 계층의 소프트웨어를 거쳤기 때문에 IP 주소, 포트 번호 등과 같은 일부 클라이언트 정보가 숨겨질 수 있으며 이는 nginx의 경우 문제 분석 및 데이터 통계에 해로울 수 있습니다. , 우리는 실제 고객을 확보하고 싶습니다

Nginx Proxy Manager에서의 컨테이너 및 마이크로서비스 배포 전략 Nginx Proxy Manager에서의 컨테이너 및 마이크로서비스 배포 전략 Sep 27, 2023 pm 01:06 PM

NginxProxyManager에서 컨테이너 및 마이크로서비스의 배포 전략에는 특정 코드 예제가 필요합니다. 요약: 마이크로서비스 아키텍처의 인기로 인해 컨테이너화 기술은 현대 소프트웨어 개발의 중요한 부분이 되었습니다. 마이크로서비스 아키텍처에서 NginxProxyManager는 마이크로서비스의 트래픽을 관리하고 프록시하는 데 사용되는 매우 중요한 역할을 합니다. 이 문서에서는 NginxProxyManager를 사용하여 컨테이너화된 마이크로서비스를 배포 및 관리하는 방법을 소개하고 관련 코드 예제를 제공합니다.

Nginx 프록시 관리자 튜토리얼: 빠른 시작 가이드 Nginx 프록시 관리자 튜토리얼: 빠른 시작 가이드 Sep 27, 2023 pm 05:39 PM

NginxProxyManager 튜토리얼: 빠른 시작 가이드, 필요한 특정 코드 예제 소개: 네트워크 기술의 발전으로 프록시 서버는 일상적인 인터넷 사용의 일부가 되었습니다. NginxProxyManager는 Nginx 기반의 프록시 서버 관리 플랫폼으로, 프록시 서버를 신속하게 구축하고 관리하는 데 도움이 됩니다. 이 기사에서는 NginxProxyManager의 빠른 시작 가이드와 일부 특정 코드 예제를 소개합니다. 하나

Nginx 프록시 관리자를 사용하여 여러 서버의 로드 밸런싱을 달성하는 방법 Nginx 프록시 관리자를 사용하여 여러 서버의 로드 밸런싱을 달성하는 방법 Sep 27, 2023 pm 09:42 PM

NginxProxyManager를 사용하여 여러 서버의 로드 밸런싱을 달성하는 방법 NginxProxyManager는 Nginx를 기반으로 개발된 프록시 서버 관리 도구로 Nginx 프록시 서버를 쉽게 구성하고 관리할 수 있는 간단하고 사용하기 쉬운 웹 인터페이스를 제공합니다. 실제 애플리케이션에서는 로드 밸런싱을 달성하고 시스템 성능과 가용성을 향상시키기 위해 요청을 여러 서버에 분산해야 하는 경우가 많습니다. 이 기사에서는 NginxProx를 사용하는 방법을 소개합니다.

Nginx 프록시 관리자를 사용하여 HTML 페이지를 빠르게 캐시하는 방법 Nginx 프록시 관리자를 사용하여 HTML 페이지를 빠르게 캐시하는 방법 Sep 28, 2023 am 10:58 AM

NginxProxyManager를 사용하여 HTML 페이지를 빠르게 캐싱하는 방법 소개: 최신 네트워크 애플리케이션에서 웹 페이지를 빠르게 로드하는 것은 중요한 요구 사항입니다. 사용자 경험을 향상시키기 위해 NginxProxyManager를 사용하여 HTML 페이지를 빠르게 캐시할 수 있습니다. 이 기사에서는 NginxProxyManager를 사용하여 이 목표를 달성하는 방법을 보여주고 구체적인 코드 예제를 제공합니다. 1부: NginxProxy 설치 및 구성

Nginx 프록시 관리자 원칙 및 실습: 웹사이트 성능 최적화의 핵심 Nginx 프록시 관리자 원칙 및 실습: 웹사이트 성능 최적화의 핵심 Sep 26, 2023 am 11:06 AM

NginxProxyManager 원리 및 실습: 웹사이트 성능 최적화의 핵심은 특정 코드 예제가 필요합니다. 소개: 오늘날 인터넷 시대에 웹사이트 성능은 사용자 경험과 검색 엔진 최적화에 매우 중요합니다. 웹사이트의 성능을 향상시키기 위한 효과적인 방법은 Nginx를 역방향 프록시 서버로 사용하여 트래픽을 관리하고 분산시키는 것입니다. 이 기사에서는 NginxProxyManager의 원칙과 사례를 소개하고 NginxProxyManager를 통해 웹사이트를 최적화하는 방법을 보여줍니다.

Nginx 프록시 관리자는 HTTP 요청의 캐시 가속을 구현합니다. Nginx 프록시 관리자는 HTTP 요청의 캐시 가속을 구현합니다. Sep 26, 2023 am 10:53 AM

NginxProxyManager는 Nginx 프록시 서버를 관리하기 위한 도구입니다. 이를 사용하면 HTTP 요청의 캐시 가속을 달성할 수 있습니다. 다음에서는 NginxProxyManager를 사용하여 캐시 가속을 구현하는 방법을 자세히 소개하고 구체적인 코드 예제를 제공합니다. 1. NginxProxyManager 설치 및 구성 NginxProxyManager 설치: $npminstall-g@nginx

See all articles