Паттерн "Фабричный метод" (Factory Method) в Java
Паттерн "Фабричный метод" (Factory Method) позволяет создавать объекты без указания конкретных классов. Создание объекта делегируется методу, который может быть переопределен подклассом, чтобы изменить тип создаваемого объекта.
Пример реализации:
1️⃣ Создадим интерфейс продукта, который будет производиться фабричным методом.
interface Product {
void use();
}2️⃣ Создадим реализации продуктов.
class ConcreteProductA implements Product {
@Override
public void use() {
System.out.println("Using ConcreteProductA");
}
}
class ConcreteProductB implements Product {
@Override
public void use() {
System.out.println("Using ConcreteProductB");
}
}3️⃣ Создадим абстрактный класс с фабричным методом.
abstract class Creator {
public abstract Product factoryMethod();
public void anOperation() {
Product product = factoryMethod();
product.use();
}
}4️⃣ Реализуем конкретные создатели для каждого типа продукта.
class ConcreteCreatorA extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductA();
}
}
class ConcreteCreatorB extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductB();
}
}5️⃣ Демонстрация использования.
public class FactoryMethodDemo {
public static void main(String[] args) {
Creator creatorA = new ConcreteCreatorA();
creatorA.anOperation(); // Использует ConcreteProductA
Creator creatorB = new ConcreteCreatorB();
creatorB.anOperation(); // Использует ConcreteProductB
}
}В этом примере класс FactoryMethodDemo демонстрирует использование фабричного метода. Класс Creator содержит фабричный метод factoryMethod(), который переопределяется в подклассах ConcreteCreatorA и ConcreteCreatorB для создания конкретных продуктов ConcreteProductA и ConcreteProductB соответственно.