Design Pattern in C#