プログラマになる

組み込みエンジニアで主にC言語、時々C#をやっている人の技術メモです。

デザインパターン 遅延読み込み(LazyLoading)

定義

Wikipedia 遅延読み込みによると以下の意味らしい。

遅延読み込み(ちえんよみこみ、英語: Lazy loading)とは実際にオブジェクトが  
必要とされたときに後から初期化を行うソフトウェアデザインパターンの一つである。

Lazy Initialization

遅延読み込みだけでもデザインパターンが複数あるらしい、
遅延初期化(英語: lazy initialization)を以下にまとめる。

MARTINFOWLER.COMを参考して特徴をまとめる。

  • Lazy initializationは最適化するためのテクニックである。
  • 遅延させることで初期化を早くし利用者が望む
    タイミングで初期化処理を開始できるようになる。
  • パフォーマンス改善のテクニックなので
    問題がない限りLazy initializationは使わないほうがよい
  • このテクニックを利用するとデバッグに苦労する
    初期化が遅延されるためシステム上で存在しない状態が一時的に生まれるため

まとめ

このデザインパターンは最終手段的なものなのかなと思う。
むやみやたらに使うものではないことはわかった。

備考

C#だと.NET4.0以降は遅延初期化を実現するLazyとLazyInitializerというのがあるらしい
[C#] 遅延初期化を実現する3つのパターンと2つのクラス...