Пример классической реализации
Диаграмма классов будет выглядеть следующим образом:
Рисунок 5 Диаграмма классов для классического примера шаблонного метода
Исходный код:
public abstract class Warrior
{
public abstract string Info();
}
public class Infantryman : Warrior
{
public override string Info()
{
return "Infantryman";
}
}
public class Archer : Warrior
{
public override string Info()
{
return "Archer";
}
}
public class Horseman : Warrior
{
public override string Info()
{
return "Horseman";
}
}
public abstract class Factory
{
public abstract Warrior CreateWarrior();
}
public class InfantryFactory : Factory
{
public override Warrior CreateWarrior()
{
return new Infantryman();
}
}
public class ArchersFactory : Factory
{
public override Warrior CreateWarrior()
{
return new Archer();
}
}
public class CavalryFactory : Factory
{
public override Warrior CreateWarrior()
{
return new Horseman();
}
}
Классический вариант шаблона «Фабричный метод» использует идею полиморфной фабрики. Специально выделенный для создания объектов полиморфный базовый класс Factory объявляет интерфейс фабричного метода CreateWarrior(), а производные классы его реализуют.
Представленный вариант паттерна Factory Method является наиболее распространенным, но не единственным. Возможны следующие вариации:
Класс Factory имеет реализацию фабричного метода CreateWarrior() по умолчанию.
Фабричный метод CreateWarrior() класса Factory параметризирован типом создаваемого объекта (как и у представленного ранее, простого варианта Factory Method) и имеет реализацию по умолчанию. В этом случае, производные от Factory классы необходимы лишь для того, чтобы определить нестандартное поведение CreateWarrior().
Достарыңызбен бөлісу: |