public void Work() { // For example - we have already known factory types. We can // read it from configuration or another source. var phoneTypes = new List <CreatorGetter.PhoneType> { CreatorGetter.PhoneType.Symbian, CreatorGetter.PhoneType.Android, CreatorGetter.PhoneType.IOS }; foreach (var phoneType in phoneTypes) { PhoneCreator creator = CreatorGetter.GetCreator(phoneType); IPhone phone = creator.CreatePhone(); phone.Notify(); } }