Skip to content

Урок 1. Фабричный метод (Factory Method)

Паттерн "Фабрика" (Factory) — это один из порождающих паттернов проектирования, который используется для создания объектов. Он позволяет создавать экземпляры классов, не указывая конкретный класс, который будет создан. Это особенно полезно, когда у нас есть суперкласс с несколькими подклассами, и на основе определенного ввода необходимо вернуть один из подклассов. Основные концепции

Суперкласс и подклассы:
    Суперкласс (или абстрактный класс) определяет общий интерфейс для всех подклассов.
    Подклассы реализуют конкретные детали и поведение, специфичные для каждого типа объекта.

Фабрика:
    Фабрика — это класс или метод, который инкапсулирует логику создания объектов.
    В зависимости от входных данных (например, параметров, условий) фабрика возвращает экземпляр одного из подклассов.

Преимущества использования паттерна "Фабрика"

Упрощение кода: Код, который использует фабрику, не зависит от конкретных классов, что упрощает его поддержку и расширение.
Инкапсуляция логики создания: Логика создания объектов сосредоточена в одном месте, что облегчает внесение изменений.
Гибкость: Легко добавлять новые подклассы без изменения существующего кода, что соответствует принципу открытости/закрытости (Open/Closed Principle).

Пример использования

Рассмотрим пример, где у нас есть суперкласс Animal и несколько подклассов, таких как Dog и Cat. Мы создадим фабрику, которая будет возвращать экземпляры этих классов на основе входного параметра.

class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

class AnimalFactory:
    @staticmethod
    def create_animal(animal_type):
        if animal_type == "dog":
            return Dog()
        elif animal_type == "cat":
            return Cat()
        else:
            raise ValueError("Unknown animal type")

# Использование фабрики
animal_type = input("Enter animal type (dog/cat): ")
animal = AnimalFactory.create_animal(animal_type)
print(animal.speak())

Заключение

Паттерн "Фабрика" является мощным инструментом для управления созданием объектов в программировании. Он позволяет разработчикам создавать гибкие и расширяемые системы, где добавление новых типов объектов не требует значительных изменений в существующем коде. Использование этого паттерна способствует улучшению структуры кода и облегчает его поддержку.

пример на java

https://gitlab.com/synergy9980417/razdel2/7_1