Подскажите что это за паттерн проектирования?
Есть код, не могу понять что это за паттерн, похоже на реализацию итератора, подскажите плиз
class MainApp
{
static void Main()
{
Class1[] cr = new Class1[2];
cr[0] = new Class2();
cr[1] = new Class3();
foreach (Class1 c in cr)
{
Class4 pr = c.Method();
Console.WriteLine("Created {0}", pr.GetType().Name);
}
Console.ReadKey();
}
abstract class Class4 { }
class Class5 : Class4 { }
class Class6 : Class4 { }
abstract class Class1 { public abstract Class4 Method(); }
class Class2 : Class1
{
public override Class4 Method()
{
return new Class5();
}
}
class Class3 : Class1
{
public override Class4 Method()
{
return new Class6();
}
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Это не код, а шифр какой-то, все названия классов - обфускат. Нет, это не итератор, это фабрика.
Если этот код переписать нормально, получится что-то такое
abstract class ItemBase { }
class ItemFirst : ItemBase { }
class ItemSecond : ItemBase { }
abstract class FactoryBase
{
public abstract ItemBase CreateItem();
}
class ItemFirstFactory : FactoryBase
{
public override ItemBase CreateItem()
{
return new ItemFirst();
}
}
class ItemSecondFactory : FactoryBase
{
public override ItemBase CreateItem()
{
return new ItemSecond();
}
}
static void Main(string[] args)
{
FactoryBase[] factories = new FactoryBase[2];
factories[0] = new ItemFirstFactory();
factories[1] = new ItemSecondFactory();
foreach (FactoryBase factory in factories)
{
ItemBase item = factory.CreateItem();
Console.WriteLine("Created {0}", item.GetType().Name);
}
Console.ReadKey();
}
Вывод в консоль
Created ItemFirst
Created ItemSecond
Для реализации фабрик использовался шаблон "Фабричный метод".