概要プロキシ パターンは、デザイン パターンの中でも構造デザイン パターンに属します。 意味: 名前が示すように、オブジェクトへのアクセスを制御するために、オブジェクトの代替またはプレースホルダーを提供します。 俗語による説明: 多くの有名人にはエージェントがいます。商業公演やコンサートのためにエージェントに連絡したい場合は、まずエージェントに連絡する必要があります。エージェントと協力事項について話し合った後、エージェントはそれを有名人に伝え、有名人は活動に参加します。家を借りる場合も同じです。家を借りる場合でも買う場合でも、私たちの最初の反応は間違いなくLianjiaのようなプラットフォームを見つけることです。なぜなら、私たちはLianjiaと連絡を取るだけでよく、Lianjiaが家主と連絡を取るので、家主と直接連絡を取る手間が省けるからです。Lianjiaは代理店モデルであるため、家主の住宅リソースのエージェントとして機能します。 実装例えば: スター チェイサーとして、あなたはスターの熱心なファンです。たまたまそのスターの誕生日が近づいており、あなたは自分の気持ちを表現するために贈り物を送ろうとしています。通常の手順は次のとおりです。 var ファン = { 花(){ star.reception("花"); } } var スター = { 受付:関数(ギフト){ console.log("ファンから受け取りました: "+ギフト); } } Fans.flower(); //ファンから花を受け取る あなたは、彼女があなたの愛を感じてくれることを願って、花を買って彼女に送ることを選びました。しかし、理想は満ち溢れていて、現実はとても貧弱であることが多いのです。エージェントを忘れないでください。贈り物にサインするのはスター本人ではなく、エージェントであることが多いからです。 var ファン = { 花(){ Agent.reception("花"); } } var エージェント = { 受付:関数(ギフト){ console.log("ファンからの贈り物: "+gift); //ファンからの贈り物: flowersstar.reception("flowers"); } } var スター = { 受付:関数(ギフト){ console.log("ファンから受け取りました: "+ギフト); } } Fans.flower(); //ファンから花を受け取った ここでのエージェントは単なるエージェントです。ファンはまずエージェントに贈り物を渡し、その後エージェントがそれをスター本人に渡します。 保護エージェントファンから送られてきた小包を見てスターは大喜びし、それを開けてみると、花が入っていたことが分かった!スターは非常に軽蔑していたので、彼はエージェントに、今後私に花を送ってきた人はもう送らないで、自分で対処するように言いました。 var ファン = { 花(){ Agent.reception("花"); } } var エージェント = { 受付:関数(ギフト){ console.log("ファンからのギフト: "+gift); //ファンからのギフト: flowersif(gift != "flowers"){ star.reception("花"); } } } var スター = { 受付:関数(ギフト){ console.log("ファンから受け取りました: "+ギフト); } } ファン.flower(); 上記の番組では、ファンが送った花束をスターがまったく受け取らなかったが、それはエージェントによって傍受され、処理されたためである。エージェントを通して一部の贈り物をフィルタリングすることを保護エージェントと呼ぶ。 仮想エージェントもしスターたちがファンから送られた花を受け取らないのであれば、ファンは考え方を変えて、スターたちが欲しいものを買えるようにお金をあげればいいのです!そこで彼はエージェントを探し、そのエージェントに現金100万ドルを渡し、それをスター本人に渡すように頼んだ。 関数 Money(){ this.total = "現金100万" this.total を返します。 } var ファン = { 花(){ エージェント.受信(); } } var エージェント = { 受付:関数(){ // console.log("ファンからのギフト: "+gift); money = new Money(); star.reception(お金.合計); } } var スター = { 受付:関数(ギフト){ console.log("ファンから受け取りました: "+ギフト); //ファンから受け取りました: 現金 100 万} } ファン.flower(); スターは 100 万ドルを受け取ったとき、とても喜びました。100 万ドルは使われなかったため、エージェントによって傍受およびフィルタリングされませんでした。そのため、スターはそれを直接受け取りました。このモデルを仮想エージェント モデルと呼びます。 画像の遅延読み込みを実現する仮想プロキシプロキシがない場合、コードは次のようになります。 // エンティティオブジェクトを作成する var myImage = (function(){ // タグを作成します var imgNode = document.createElement( 'img' ); // ページに追加 document.body.appendChild( imgNode ); 戻る { // 画像のsrcを設定する setSrc: 関数(src) { // ソースを変更 src を src にコピーします。 } } })(); myImage.setSrc( 'http:// image.qq.com/music/photo/k/000GGDys0yA0Nk.jpg' ); 仮想エージェント // エンティティオブジェクトを作成する var myImage = (function(){ // タグを作成します var imgNode = document.createElement( 'img' ); // ページに追加 document.body.appendChild( imgNode ); 戻る { // 画像のsrcを設定する setSrc: 関数(src) { // ソースを変更 src を src にコピーします。 } } })(); // プロキシオブジェクトを作成する var proxyImage = (function(){ // 新しい img タグを作成します var img = new Image; // 画像読み込み完了イベント img.onload = function(){ // src メソッドを置き換えるには myImage を呼び出します myImage.setSrc( this.src ); } 戻る { // プロキシ設定アドレス setSrc: function( src ){ // プリロード読み込み myImage.setSrc( 'file:// /C:/Users/svenzeng/Desktop/loading.gif' ); // 通常の画像アドレスを割り当てます img.src = src; } } })(); proxyImage.setSrc( 'http:// image.qq.com/music/photo/k/000GGDys0yA0Nk.jpg' ); 上記のコードでは、プロキシ モードを使用して画像のプリロードを実装しています。プロキシ モードでは、画像の作成とプリロード ロジックが巧みに分離されていることがわかります。将来、プリロードが不要になった場合は、リクエスト プロキシ オブジェクトではなく、リクエスト ボディを変更するだけです。 以上がJavaScriptデザインパターン学習におけるプロキシパターンの詳しい内容です。JavaScriptデザインパターンについてさらに詳しく知りたい方は、123WORDPRESS.COMの他の関連記事もぜひご覧ください! 以下もご興味があるかもしれません:
|
dockerをインストールすると、通常はdockerユーザーグループが作成されます。ステップ2: 現...
今日はメニューボタンを作りました。マウスをボタンに移動するすると、ドロップダウンサブメニューが表示さ...
多方向探索ツリー完全二分木の高さ: O(log2N)、ここで2は対数完全なM方向探索木の高さ: O(...
1. コマンドラインでMySQLサービスを停止します: net stop mysql stop my...
この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...
1. docker に nginx をインストールします。 docker に Nginx をインスト...
最近、モバイル ページを開発しているときに、ページの幅が 100% の場合、高さは幅の半分になり、携...
最近では、特定のフォルダ内の特定のファイルを自動的に検索する必要があり、ファイルパスとファイル名を別...
新年の初めに、友人の健康と2013年が素晴らしい年となることを心からお祈りいたします。この記事では、...
JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...
Ubuntu 18.04.4 に MySQL をインストールするプロセスを見てみましょう。内容は次の...
目次1. psutilパッケージをインストールする次に、オペレーティングシステム内のすべてのサービス...
目次序文プレビュー文章グラフィックコンポーネントプロパティ機能グリッドを描く軸角度を計算するスケール...
序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...
序文この記事では主に、Linux/Mac に MySQL をインストールするときにパスワードを忘れた...