Абстрактная фабрика. Пример на C#