ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript設計パターンのプロキシパターン入門_JavaScriptスキル

JavaScript設計パターンのプロキシパターン入門_JavaScriptスキル

WBOY
リリース: 2016-05-16 16:24:08
オリジナル
1225 人が閲覧しました

プロキシ モードの説明

注: 名前が示すように、このモードはメソッド関数を実行するために別のクラスを置き換えるために使用されます。違いは、プロキシ モードがクライアントに代わってプロキシ オブジェクト クラスを初期化することです。一方、デコレーション モードではインターフェイスが使用されるか、初期デコレータ パラメータ参照が実行に使用されます。

動的オブジェクト指向言語では、プロキシ モードはプロキシ クラスを制御および変更するだけでなく、プロキシ クラスを完全に非表示にして保護します。プロキシ クラスは必要なときにのみ間接的に初期化され、呼び出されます。

シーンの説明:

非常に一般的な例は、家を借りる場合です。借主は家を借りたいが、家主も家を探したり、誰かを待ったりする時間がありません。自宅の家を見たいので、一緒に住宅仲介業者に行きます。家主は仲介業者に部屋の賃貸・売買を委託し、仲介業者が部屋を紹介し、賃貸料を支払います。エージェントが要求する部屋の位置条件を満たしていること。エージェントがテナントのシェアルーム探しを支援した後、二人はその部屋を借りる料金を支払い、テナントに場所を借ります。

ソースコードの例

上記の例に従います;

1. 家主の賃貸料;


コードをコピー コードは次のとおりです:
関数 Fangdong() {
This.room = 'ルーム名';
}
Fangdong.prototype.chuzu = function() {
console.log('家主が部屋を借りています: ' this.room);
}

2. 仲介エージェントクラス:

コードをコピーします コードは次のとおりです:
関数 Proxy() {
This.fangdong = new Fangdong();
}
Proxy.prototype.chuzu = function() {

This.fangdong.chuzu();
console.log('レンタル後は仲介手数料がかかります');
}

3. 使用方法:


コードをコピー コードは次のとおりです:
//テナントはエージェントに家探しを手伝ってくれるように頼みます;
var proxy = new Proxy();
proxy.chuzu();

上記の使用法を見てください。クライアント側ではプロキシ クラスはまったく必要ありません。プロキシ クラスを使用するだけです。これは、プロキシ モードを使用して特定のビジネス ロジック プロセスを保護する必要があるシナリオで非常によく使用できます。優れた保護には保護されたプロキシ クラスが必要です。

その他の指示

デコレータ パターンと同様に、プロキシ パターンも、拡張にはオープンで、変更にはクローズであるオブジェクト指向の思考の原則をよく体現しています。 プロキシ モードでは、インターフェイスまたは抽象クラスを使用して共通インターフェイスを標準化できます: (JAVA プロキシ モードについては以下で説明します)


1. 抽象クラスの抽象メソッド;


パブリック抽象クラス House {
public void abstract chuzu();
}

公的階級の方東がハウスを拡張 { Private String room = “ルーム名”;

@オーバーライド
public void chuzu() {
System.out.println(room);
}
}

パブリック クラス プロキシはハウスを拡張します {

方東一等兵;

パブリック プロキシ() {
This.fangdong = new Hangdong();
}
@オーバーライド
public void chuzu() {
This.fandong.chuzu();
System.out.println("レンタル後に仲介手数料をお支払いください");
}
}

//

を使用します ハウス house = new Proxy();

house.chuzu();


2. インターフェース インターフェースモード:

コードをコピー コードは次のとおりです:

インターフェースハウス {
    public void chuzu();
}

パブリック クラス Fangdong は House {
を実装します     private String room = “房间名”;
    @オーバーライド
    public void chuzu() {
        System.out.println(room);
    }
}

パブリック クラス プロキシはハウスを実装します {
    プライベート方東方東;
    パブリック プロキシ() {
        this.fangdong = new Hangdong();
    }
    @オーバーライド
    public void chuzu() {
        this.fandong.chuzu();
        System.out.println(“出租後交中介费”);
    }
}

//使用
ハウス house = new Proxy();
house.chuzu();

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート