An example of a factory method in the Python programming language
- """
- Define an interface for creating an object, but let subclasses decide
- which class to instantiate. Factory Method lets a class defer
- instantiation to subclasses.
- """
- import abc
- class Creator(metaclass=abc.ABCMeta):
- """
- Declare the factory method, which returns an object of type Product.
- Creator may also define a default implementation of the factory
- method that returns a default ConcreteProduct object.
- Call the factory method to create a Product object.
- """
- def __init__(self):
- self.product = self._factory_method()
- @abc.abstractmethod
- def _factory_method(self):
- pass
- def some_operation(self):
- self.product.interface()
- class ConcreteCreator1(Creator):
- """
- Override the factory method to return an instance of a
- ConcreteProduct1.
- """
- def _factory_method(self):
- return ConcreteProduct1()
- class ConcreteCreator2(Creator):
- """
- Override the factory method to return an instance of a
- ConcreteProduct2.
- """
- def _factory_method(self):
- return ConcreteProduct2()
- class Product(metaclass=abc.ABCMeta):
- """
- Define the interface of objects the factory method creates.
- """
- @abc.abstractmethod
- def interface(self):
- pass
- class ConcreteProduct1(Product):
- """
- Implement the Product interface.
- """
- def interface(self):
- pass
- class ConcreteProduct2(Product):
- """
- Implement the Product interface.
- """
- def interface(self):
- pass
- def main():
- concrete_creator = ConcreteCreator1()
- concrete_creator.product.interface()
- concrete_creator.some_operation()
- if __name__ == "__main__":
- main()