【C#】【GoF】Lazy<T>クラス ~Proxyパターンの実現~

Lazy<T>クラス

 * GOFデザインパターンのProxyパターン(使用するときまで生成を遅らせる)を実現することができる
 * Lazy => 必要になるまでやらない

使用用途およびその例

 * 重い処理、急に使用する必要がない処理に有効

【例】
 * 重い画面(View)の表示
 * 画像の表示

サンプル

TargetClass.cs

public class TargetClass
{
    public TargetClass()
    {
        Console.WriteLine("TargetClass Created");
    }
}

Program.cs

static void Main(string[] args)
{
    Console.WriteLine("Start");
    var lazyObject = new Lazy<TargetClass>();
    Console.WriteLine("new Lazy<TargetClass>");
    Console.WriteLine("IsValueCreated = {0}", lazyObject.IsValueCreated);
    TargetClass obj = lazyObject.Value;
    Console.WriteLine("IsValueCreated = {0}", lazyObject.IsValueCreated);
    Console.WriteLine("End");

    Console.Read();
}

Program.cs

Start
new Lazy<TargetClass>
IsValueCreated = False
TargetClass Created
IsValueCreated = True
End