Proxy パターン

デザインパターンちゃんと勉強をしようと思ったので結城さんの本を 1 つ 1 つ実装してみる。 前回の Flyweightからの続き。

Proxy(プロキシ、代理人)とは、大まかに言えば、別の物のインタフェースとして機能するクラスである。その「別の物」とは何でもよく、ネットワーク接続だったり、メモリ上の大きなオブジェクトだったり、複製がコスト高あるいは不可能な何らかのリソースなどである。

クラス図

Proxy PlantUML

自分としての理解・疑問

  • 実装時にはあまり気にしていなかったけど、Flyweight パターンとの組み合わせはキャッシュ的な使い方ではありそうだなと思った。

複雑なオブジェクトの複数のコピーが必須となる状況では、Proxy パターンに Flyweight パターンを加えることでメモリ使用量を抑えることができる。

  • Flyweight も Proxy も分割するための仕組みという意味もあるけど、重い処理をいかに分割してよりよく管理するかという印象