Skip to content

Instantly share code, notes, and snippets.

@robson-koji
Last active June 26, 2023 19:46
Show Gist options
  • Save robson-koji/b3b81c45c73b05d1987d4444b83661d6 to your computer and use it in GitHub Desktop.
Save robson-koji/b3b81c45c73b05d1987d4444b83661d6 to your computer and use it in GitHub Desktop.
Design Pattern - Factory

Factory

This is a simplified example to demonstrate the Factory Pattern concept. In practice, you may have more complex creation logic and configurations in the factory, but the core idea remains the same: creating objects based on specific criteria or configurations.

class DataProcessor:
    def process(self):
        raise NotImplementedError()

class DatabaseExtractor(DataProcessor):
    def process(self):
        print("Extracting data from the database...")

class APIExtractor(DataProcessor):
    def process(self):
        print("Extracting data from the API...")

class FileExtractor(DataProcessor):
    def process(self):
        print("Extracting data from the file...")

class DataProcessorFactory:
    @staticmethod
    def create_data_processor(source):
        if source == "database":
            return DatabaseExtractor()
        elif source == "api":
            return APIExtractor()
        elif source == "file":
            return FileExtractor()
        else:
            raise ValueError("Invalid data source.")

# Client code
data_source = "database"
processor = DataProcessorFactory.create_data_processor(data_source)
processor.process()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment