プロキシパターンとは?
ぷろきしぱたーん
あるオブジェクトへのアクセスを代理オブジェクト(プロキシ)を介して制御するデザインパターンで、アクセス制限やキャッシュなどの機能を付加します。
プロキシパターン(Proxy Pattern)とは、GoFのデザインパターンの一つで、あるオブジェクト(実オブジェクト・Real Subject)へのアクセスを制御するための代理オブジェクト(プロキシ)を介在させる構造的パターンです。プロキシは実オブジェクトと同じインターフェースを実装し、クライアントからは透過的に見えます。
プロキシパターンには目的に応じていくつかの種類があります。
- 仮想プロキシ:重いオブジェクトの生成を実際にアクセスされるまで遅延させる(遅延初期化)
- 保護プロキシ:アクセス権限をチェックし、許可されたクライアントのみ実オブジェクトにアクセスさせる
- リモートプロキシ:別プロセスや別マシンにあるオブジェクトへのアクセスをローカルから行えるように橋渡しする
- キャッシングプロキシ:頻繁にアクセスされる結果をキャッシュして処理を高速化する
Javaのjava.lang.reflect.Proxyクラスや、Python、TypeScriptのProxyオブジェクトが言語レベルでの実装例として知られています。ORMのLazyローディング、ログ出力の自動付加、HTTPキャッシュレイヤーなど実用的な場面で広く活用されています。デコレータパターンと似ていますが、プロキシは主にアクセス制御を目的とし、デコレータは機能追加を目的とする点で異なります。
使い方・例文
データベースへの問い合わせが重い処理にプロキシを挟み込み、同じクエリの結果をキャッシュして2回目以降の呼び出しではDBに問い合わせずキャッシュから返す実装が、キャッシングプロキシパターンの代表例です。
この用語をシェア
最終更新: