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



бет4/15
Дата01.10.2022
өлшемі254,47 Kb.
#41019
1   2   3   4   5   6   7   8   9   ...   15
Обобщенный конструктор, когда в том же самом полиморфном базовом классе, от которого наследуют производные классы всех создаваемых в системе типов, определяется статический фабричный метод. В качестве параметра в этот метод должен передаваться идентификатор типа создаваемого объекта.

Рисунок 2 Пример диаграммы классов для фабричного метода с обобщённым конструктором
Исходный код для данной диаграммы выглядит следующим образом:
public enum Products
{
Product1,
Product2
}

public class Product


{
public static Product CreateProduct(Products parProductType)
{
Product product = null;

switch (parProductType)


{
case Products.Product1:
product = new Product1();
break;
case Products.Product2:
product = new Product2();
break;
}

return product;


}
}

public class Product1 : Product


{
}

public class Product2 : Product


{
}
Классический вариант фабричного метода, когда интерфейс фабричных методов объявляется в независимом классе-фабрике, а их реализация определяется конкретными подклассами этого класса.

Рисунок 3 Пример классического фабричного метода
Исходный код для данной диаграммы выглядит следующим образом:
public abstract class Creator
{
public abstract Product FactoryMethod();
}

public class CreatorForProduct1 : Creator


{
public override Product FactoryMethod()
{
return new Product1();
}
}

public class CreatorForProduct2 : Creator


{
public override Product FactoryMethod()
{
return new Product2();
}
}

public abstract class Product


{
}

public class Product1 : Product


{
}

public class Product2 : Product


{
}


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




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

    Басты бет