ホームページ バックエンド開発 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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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 で proxyprotocol が使用される場合、nginx は Web サーバーおよびプロキシ サーバーであることがわかります。通常、nginx はプロキシサーバーまたは負荷分散ソフトウェア (Haproxy、Amazon Elastic LoadBalancer (ELB)) の背後で動作します。クライアントは最初にプロキシサーバーまたは LSB 負荷分散ソフトウェアを要求します。そして nginx へ 実際の Web アクセスを実行します。複数のソフトウェア層を通過するため、IP アドレス、ポート番号などの一部のクライアント情報が隠される可能性があり、問題分析やデータ統計に悪影響を及ぼします。 , 実際の顧客を獲得できるようにしたい

Nginx プロキシ マネージャー チュートリアル: クイック スタート ガイド Nginx プロキシ マネージャー チュートリアル: クイック スタート ガイド Sep 27, 2023 pm 05:39 PM

NginxProxyManager チュートリアル: クイック スタート ガイド、必要な特定のコード例 はじめに: ネットワーク技術の発展に伴い、プロキシ サーバーはインターネットの日常使用の一部になりました。 NginxProxyManager は、Nginx ベースのプロキシ サーバー管理プラットフォームで、プロキシ サーバーを迅速に確立して管理するのに役立ちます。この記事では、NginxProxyManager のクイック スタート ガイドと、いくつかの具体的なコード例を紹介します。 1つ

Nginx Proxy Manager でのコンテナとマイクロサービスのデプロイ戦略 Nginx Proxy Manager でのコンテナとマイクロサービスのデプロイ戦略 Sep 27, 2023 pm 01:06 PM

NginxProxyManager でのコンテナーとマイクロサービスのデプロイメント戦略には、特定のコード サンプルが必要です 概要: マイクロサービス アーキテクチャの人気により、コンテナー化テクノロジは最新のソフトウェア開発の重要な部分になっています。マイクロサービス アーキテクチャでは、NginxProxyManager は非常に重要な役割を果たし、マイクロサービスのトラフィックの管理とプロキシに使用されます。この記事では、NginxProxyManager を使用してコンテナ化されたマイクロサービスをデプロイおよび管理する方法を紹介し、関連するコード例を示します。

Nginx Proxy Managerを使用して複数のサーバーの負荷分散を実現する方法 Nginx Proxy Managerを使用して複数のサーバーの負荷分散を実現する方法 Sep 27, 2023 pm 09:42 PM

NginxProxyManager を使用して複数サーバーの負荷分散を実現する方法. NginxProxyManager は、Nginx に基づいて開発されたプロキシ サーバー管理ツールであり、Nginx プロキシ サーバーを簡単に設定および管理できるシンプルで使いやすい Web インターフェイスを提供します。実際のアプリケーションでは、負荷分散を実現し、システムのパフォーマンスと可用性を向上させるために、リクエストを複数のサーバーに分散する必要があることがよくあります。この記事ではNginxProxの使い方を紹介します。

Nginx Proxy ManagerはHTTPリクエストのキャッシュアクセラレーションを実装します Nginx Proxy ManagerはHTTPリクエストのキャッシュアクセラレーションを実装します Sep 26, 2023 am 10:53 AM

NginxProxyManager は Nginx プロキシサーバーを管理するためのツールで、これを使用することで HTTP リクエストのキャッシュ高速化を実現できます。以下では、NginxProxyManager を使用してキャッシュ アクセラレーションを実装する方法を詳しく紹介し、具体的なコード例を示します。 1. NginxProxyManager のインストールと構成 NginxProxyManager をインストールします: $npminstall-g@nginx

Nginx プロキシ マネージャーの原則と実践: Web サイトのパフォーマンスを最適化する鍵 Nginx プロキシ マネージャーの原則と実践: Web サイトのパフォーマンスを最適化する鍵 Sep 26, 2023 am 11:06 AM

NginxProxyManager の原則と実践: Web サイトのパフォーマンスを最適化するための鍵、特定のコード例が必要です はじめに: 今日のインターネット時代では、Web サイトのパフォーマンスはユーザー エクスペリエンスと検索エンジンの最適化にとって非常に重要です。 Web サイトのパフォーマンスを向上させるには、Nginx をリバース プロキシ サーバーとして使用し、トラフィックを管理および分散する効果的な方法があります。この記事では、NginxProxyManager の原則と実践方法を紹介し、NginxProxyManager を通じて Web サイトを最適化する方法を示します。

Nginx プロキシ マネージャーを使用して HTML ページをすばやくキャッシュする方法 Nginx プロキシ マネージャーを使用して HTML ページをすばやくキャッシュする方法 Sep 28, 2023 am 10:58 AM

NginxProxyManager を使用して HTML ページの高速キャッシュを実現する方法 はじめに: 最新のネットワーク アプリケーションでは、Web ページの高速読み込みが重要な要件です。ユーザー エクスペリエンスを向上させるために、NginxProxyManager を使用して HTML ページをすばやくキャッシュできます。この記事では、NginxProxyManager を使用してこの目標を達成する方法を説明し、具体的なコード例を示します。パート 1: NginxProxy のインストールと構成

See all articles