本文へスキップ

プロキシパターンとは?

ぷろきしぱたーん

あるオブジェクトへのアクセスを代理オブジェクト(プロキシ)を介して制御するデザインパターンで、アクセス制限やキャッシュなどの機能を付加します。

プロキシパターン(Proxy Pattern)とは、GoFのデザインパターンの一つで、あるオブジェクト(実オブジェクト・Real Subject)へのアクセスを制御するための代理オブジェクト(プロキシ)を介在させる構造的パターンです。プロキシは実オブジェクトと同じインターフェースを実装し、クライアントからは透過的に見えます。

プロキシパターンには目的に応じていくつかの種類があります。

  • 仮想プロキシ:重いオブジェクトの生成を実際にアクセスされるまで遅延させる(遅延初期化)
  • 保護プロキシ:アクセス権限をチェックし、許可されたクライアントのみ実オブジェクトにアクセスさせる
  • リモートプロキシ:別プロセスや別マシンにあるオブジェクトへのアクセスをローカルから行えるように橋渡しする
  • キャッシングプロキシ:頻繁にアクセスされる結果をキャッシュして処理を高速化する

Javaのjava.lang.reflect.Proxyクラスや、Python、TypeScriptのProxyオブジェクトが言語レベルでの実装例として知られています。ORMのLazyローディング、ログ出力の自動付加、HTTPキャッシュレイヤーなど実用的な場面で広く活用されています。デコレータパターンと似ていますが、プロキシは主にアクセス制御を目的とし、デコレータは機能追加を目的とする点で異なります。

使い方・例文

データベースへの問い合わせが重い処理にプロキシを挟み込み、同じクエリの結果をキャッシュして2回目以降の呼び出しではDBに問い合わせずキャッシュから返す実装が、キャッシングプロキシパターンの代表例です。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語