from abc import ABC, abstractmethod from creational.abstract_factory.AbstractProductA import AbstractProductA from creational.abstract_factory.AbstractProductB import AbstractProductB class AbstractFactory(ABC): """ The Abstract Factory interface declares a set of methods that return different abstract products. These products are called a family and are related by a high-level theme or concept. Products of one family are usually able to collaborate among themselves. A family of products may have several variants, but the products of one variant are incompatible with products of another. """ @abstractmethod def create_product_a(self) -> AbstractProductA: pass @abstractmethod def create_product_b(self) -> AbstractProductB: pass