Factory Method

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

Warning

This article is a work in progress and may contain incomplete information or inaccuracies. Please verify details from reliable sources.

Definition

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

# Product Interface
class Vehicle:
    def drive(self):
        raise NotImplementedError

# Concrete Products
class Car(Vehicle):
    def drive(self):
        return "Driving a car."

class Motorcycle(Vehicle):
    def drive(self):
        return "Riding a motorcycle."

# Creator Interface (Abstract Factory)
class VehicleFactory:
    def create_vehicle(self):
        raise NotImplementedError

    def deliver_vehicle(self):
        vehicle = self.create_vehicle()
        return f"Delivering: {vehicle.drive()}"

# Concrete Creators
class CarFactory(VehicleFactory):
    def create_vehicle(self):
        return Car()

class MotorcycleFactory(VehicleFactory):
    def create_vehicle(self):
        return Motorcycle()

# Client Code
if __name__ == "__main__":
    car_factory = CarFactory()
    print(car_factory.deliver_vehicle())

    motorcycle_factory = MotorcycleFactory()
    print(motorcycle_factory.deliver_vehicle())

On this page