巷で(多分) proxy パターンと呼ばれているデザインパターンを図的に理解しよう1。
重い処理
画像に示すような激重処理があったとする。
入出力の分割
重い処理の入力部分・処理部分・出力部分を別々に切り分けると必要なときに必要な分だけ処理できるようになる
全体的な複雑性は増しているが、各部分の処理に着目するとシンプルになっている
出力部分
重い処理の部分は必要になるまで待機している (lazy load)
入力部分
計算に必要なリソースを取ってくる領域を確保しておき、計算するときに取ってくる
リソースを配置する処理は別で行われても良い。
図ではストリームをバッファに溜め込んでおき、ある程度時間が経ったら捨てる処理をイメージしている。
このような処理は、例えば、信号処理をリアルタイムに行う場合などに現れる。
-
名前に関しては自信がないので、違ってたら教えて下さい ↩