
162
6
章 オブジェクト指向デザインパターンの
Node.js
への適用
もちろん、プロキシパターンにはもっと多数の応用がありますが、上の例を見ると使用法の広がりが
どれほどのものかイメージがつかめると思います。
6.3.1
プロキシ実装の手法
あるオブジェクトのプロキシを作成する場合、メソッドのすべてをインターセプトすることも、一部
のみをインターセプトして残りのメソッドは直接サブジェクトに任せる(委譲する)こともできます。方
法はいくつかありますが代表的なものを見ていきましょう。
6.3.1.1
オブジェクトの合成
合成(
composition
)とは、あるオブジェクトを他のオブジェクトと組み合わせて機能を拡張する技法
です。プロキシパターンにおける具体例としては、サブジェクトと同じインタフェースをもったプロキ
シオブジェクトを新たに作成し、サブジェクトへの参照はインスタンス変数やクロージャ変数の形でプ
ロキシの内部に保存します。サブジェクトは、クライアントから渡される場合も、プ
ロキシ自体が生成
する場合もあります。
この手法の例を次に示します。擬似的なクラスとファクトリを使っているものです(
07_proxy_a/
createProxy.js
)。
function createProxy(subject) {
const proto = Object.getPrototypeOf(subject);
function Proxy(subject) {
this.subject = subject;
} ...