Proxyパターン - TypeScriptでのアクセス制御

オブジェクトへのアクセスを制御するProxyパターンをマスターしましょう。キャッシング、遅延ロード、アクセス制御、ロギング、仮想ProxyのTypeScript実装例。

Structural

詳細な説明

Proxyパターン

Proxyパターンは、別のオブジェクトへのアクセスを制御するための代理またはプレースホルダーを提供します。Proxyは実オブジェクトと同じインターフェースを持ち、クライアントに対して透過的です。

Proxyの種類

  1. 仮想Proxy: 高価なオブジェクトの作成を実際に必要になるまで遅延(遅延ロード)
  2. 保護Proxy: パーミッションや認証に基づいてアクセスを制御
  3. キャッシングProxy: 高価な操作の結果を保存し、繰り返しのリクエストにはキャッシュ値を返す
  4. ロギングProxy: デバッグや監査のために実オブジェクトとのすべてのインタラクションを記録
  5. リモートProxy: 異なるアドレス空間のオブジェクトを表現(ネットワークProxy)

JavaScript Proxy API

TypeScriptはProxyオブジェクトを通じてファーストクラスのProxyサポートを持っています。ネイティブのProxy APIにより、プロパティアクセス、設定、関数呼び出しなどをインターセプトできます。

Proxy vs Decorator

どちらも同じインターフェースでオブジェクトをラップします。違いは意図です: Proxyはアクセスを制御します(誰が呼び出せるか、いつロードするか、結果をキャッシュするか)。Decoratorは新しい振る舞いを追加します(タイムスタンプ、暗号化、フォーマット)。

パフォーマンスの考慮

Proxyは間接参照のオーバーヘッドを追加しますが、キャッシングと仮想Proxyは通常、高価な操作を回避することで全体的なパフォーマンスを向上させます。

ユースケース

Proxyは、Webページでの画像遅延ロード、APIレスポンスキャッシング、リクエスト転送前にパーミッションをチェックするアクセス制御ミドルウェア、データベース接続プーリング、本番サービス用のロギング/監視ラッパーで広く使用されています。

試してみる — Design Pattern Reference

フルツールを開く