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()