Порождающие шаблоны проектирования


Пример классической реализации



бет6/15
Дата01.10.2022
өлшемі254,47 Kb.
#41019
1   2   3   4   5   6   7   8   9   ...   15
Байланысты:
Шаблоны проектирования (порождающие) (1)

Пример классической реализации


Диаграмма классов будет выглядеть следующим образом:

Рисунок 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().


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   15




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет