概要プロキシ パターンは、デザイン パターンの中でも構造デザイン パターンに属します。 意味: 名前が示すように、オブジェクトへのアクセスを制御するために、オブジェクトの代替またはプレースホルダーを提供します。 俗語による説明: 多くの有名人にはエージェントがいます。商業公演やコンサートのためにエージェントに連絡したい場合は、まずエージェントに連絡する必要があります。エージェントと協力事項について話し合った後、エージェントはそれを有名人に伝え、有名人は活動に参加します。家を借りる場合も同じです。家を借りる場合でも買う場合でも、私たちの最初の反応は間違いなく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の他の関連記事もぜひご覧ください! 以下もご興味があるかもしれません:
|
オフセットOffset はオフセットです。関連プロパティの offset シリーズを使用すると、次の...
今日 Docker コンテナを作成したとき、誤ってイメージの名前を間違って入力しました。その結果、コ...
Ansible を使用する学生は、以下に示すように、Ansible が特定のフォルダーまたはファイル...
MySQL での SQL モードの表示と設定MySQL はさまざまなモードで実行でき、さまざまなシナ...
問題の説明: phpstorm の SFTP ホストを 192.168.122.1 に設定すると、接...
目次プロトタイプチェーン図プロトタイピングに必須の知識プロトタイププロパティ(プロトタイプを表示) ...
1. レスポンシブな Web を開発するには、ページを画面サイズに適応させる必要があります。前の記...
社内には以前からアイドル状態だった、構成の整ったサーバーがあったので、EXSI 6.0 を使って複数...
この記事では、MySQL 8.0.23のインストールと設定方法を参考までに紹介します。具体的な内容は...
1) プロセス 2) FSImageと編集NodeNode は HDFS の頭脳です。ファイルシステ...
目次1. 理論シリアル化可能繰り返し読み取りコミットされた読み取りコミットされていない読み取り2. ...
データ表示は、常にあらゆる職業の人々が求めているものです。特にフロントエンド開発業界では、データを表...
この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコード...
目次1. プロトタイプチェーン継承2. コンストラクタの借用(古典的な継承) 3. 組み合わせ継承4...
目次1. Vue3コンポーネント通信方式2. Vue3通信の使い方2.1 小道具2.2 $エミット2...