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



Pdf көрінісі
бет3/15
Дата16.10.2022
өлшемі0,66 Mb.
#43481
1   2   3   4   5   6   7   8   9   ...   15
Шаблон «Фабричный метод» 
В системе часто требуется создавать объекты самых разных типов. Шаблон «Фабричный метод» 
(Factory Method) может быть полезным в решении следующих задач: 
• Система должна оставаться расширяемой путем добавления объектов новых типов. 
Непосредственное использование выражения «new» является нежелательным, так как в 
этом случае код создания объектов с указанием конкретных типов может получиться 
разбросанным по всему приложению. Тогда такие операции как добавление в систему 
объектов новых типов или замена объектов одного типа на другой будут 
затруднительными. Шаблон «Фабричный метод» позволяет системе оставаться 
независимой как от самого процесса порождения объектов, так и от их типов; 
Заранее известно, когда нужно создавать объект, но неизвестен его тип. 
Для того, чтобы система оставалась независимой от различных типов объектов, Шаблон 
«Фабричный метод» использует механизм полиморфизма - классы всех конечных типов 
наследуются от одного абстрактного базового класса, предназначенного для полиморфного 
использования. В этом базовом классе определяется единый интерфейс, через который 
пользователь будет оперировать объектами конечных типов. 
Для обеспечения относительно простого добавления в систему новых типов Шаблон «Фабричный 
метод» локализует создание объектов конкретных типов в специальном классе-фабрике. Методы 
этого класса, посредством которых создаются объекты конкретных классов, называются 
фабричными. Существуют две разновидности Шаблон «Фабричный метод»: 
Обобщенный конструктор, когда в том же самом полиморфном базовом классе, от которого 
наследуют производные классы всех создаваемых в системе типов, определяется статический 
фабричный метод. В качестве параметра в этот метод должен передаваться идентификатор типа 
создаваемого объекта. 
Рисунок 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 




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




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

    Басты бет