遅延読み込み(Lazy Loading)と遅延初期化(Lazy Initialization)

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

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

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

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

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

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

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