デザインパターン学習メモ:「Proxy」
このパターンの目的
GoF本より引用する。
あるオブジェクトへのアクセスを制御するために、そのオブジェクトの代理、または入れ物を提供する。(P.221)
「代理」を使ったほうがよいケースはいくつかある。たとえば、重い処理は必要になる時まで遅延させ、代理のオブジェクトが代わりに応答することでレンスポンスタイムが短くなる。
GoF本では、エディタにおける画像の読み込みの例が挙げられている。
エディタでは、その画像が本当に必要になるまで(その箇所が利用者に読まれるまでは)、画像ファイルの読み込み(ディスクへのIOが大きい)は遅延させてよい。つまり、ファイルをオープンした時に、すべての画像をディスクから読みだす必要はない。
その他の用途としては、実際のオブジェクトが処理を行う(メソッドを実行する)前後に、プロキシオブジェクトによる処理を実行することができるようになる。
構造
Subject
プロキシオブジェクトと実オブジェクトが共に実装するインタフェース
Proxy
プロキシオブジェクト。利用者はこのインスタンスを生成して利用する。
一部の処理(メソッド)を実オブジェクトに委譲する。その前後にプロキシオブジェクトは独自の処理を実行する可能性もある。
Real Subject
実オブジェクト。利用者はプロキシオブジェクトを使う代わりに、こちらのクラスを使うこともできる。
実装例
簡単に書ける有効な例が思いつかなかった。
「1.Real Subjectは生成に時間がかかり、2.Proxy単体でもある程度の仕事ができる」という例を考えたが、何も思い浮かばない。
参考文献
- エリック ガンマ、ラルフ ジョンソン、リチャード ヘルム、ジョン プリシディース(1999)『オブジェクト指向における再利用のためのデザインパターン 改訂版』本位田 真一、吉田 和樹 監訳、SBクリエイティブ
Author And Source
この問題について(デザインパターン学習メモ:「Proxy」), 我々は、より多くの情報をここで見つけました https://qiita.com/aki3061/items/c58d266911b375edc288著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .