開発
Proxyパターン
makuta
Proxyとは「代理人」という意味です。
「代理人」のイメージは、弁護士や税理士など、本人ができない仕事をするという意味合いで使われることが多いですが、GoFのProxyパターンにおいての代理人オブジェクトの役割というのは、本人でなくてもできるような処理について、要求を委譲されるオブジェクトのことを言います。
GoFでのProxyパターンは、
あるオブジェクトへのアクセスを制御するために、そのオブジェクトのの代理または入れ物を提供する。
と、定義されています。
Proxyパターンではオブジェクトの構造に注目しています。Proxyパターンでは、オブジェクトとその利用側との間に緩衝剤を用意することで、お互いを分離したり付加的な機能を追加することを目的としています。
「プロキシサーバ」というものを知っているでしょうか。プロキシサーバ(キャッシュサーバとも呼ばれます)は、外部ネットワークとのアクセス制御やコンテンツのキャッシング、さらにはインターネット上での匿名性を高めるために利用されるサーバです。 代理オブジェクトの利用側もプロキシサーバの場合と同様、代理オブジェクトにアクセスしているのか目的のオブジェクトにアクセスしているのかを意識させないような構造をしています。具体的には、代理オブジェクトと目的のオブジェクトが共通のインターフェースを実装することで実現されています。 また、代理オブジェクトは目的のオブジェクトを内部に保持して、具体的な処理を目的のオブジェクトに転送します。
ということで今回は、目的のオブジェクトの代理オブジェクトを用意するProxyパターンについてでした。