All Articles

Creational Design Pattern: Factory Method

This article was done using my notes from:

Alexander Shvets (2019), Dive into Design Patterns, Refactoring.Guru

Factory Method

Factory Method is a creational deisgn pattern that provides an interface for created objects in a superclass, but allows subclasses to alter the type of objects that will be created.


Factory Pattern


from __future__ import annotations
from abc import ABC, abstractmethod

class Creator(ABC):
    def factory_method(self):

    def some_operation(self) -> str:
        product = self.factory_method()
        return product.operation()

class ConcreteCreator1(Creator):
    def factory_method(self) -> Product:
        return ConcreteProduct1()

class ConcreteCreator2(Creator):
    def factory_method(self) -> Product:
        return ConcreteProduct2()

class Product(ABC):
    def operation(self) -> str:

class ConcreteProduct1(Product):
    def operation(self) -> str:
        return "{Result of the ConcreteProduct1}"

class ConcreteProduct2(Product):
    def operation(self) -> str:
        return "{Result of the ConcreteProduct2}"