public FlyweightPattern() { CharFactory charFactory=new CharFactory(); var ca = charFactory.GetChar("A"); ca.SetSize(10); ca.Write(); CharB cb1 = (CharB)charFactory.GetChar("B"); cb1.SetSize(12); cb1.Write(); CharB cb2 = (CharB)charFactory.GetChar("B"); cb2.SetSize(12); cb2.Write(); Console.WriteLine(object.ReferenceEquals(cb1, cb2)); CharB cb3 = new CharB(); cb3.SetSize(12); Console.WriteLine(object.ReferenceEquals(cb1, cb3)); }