1. Definition
The Factory Method Design Pattern defines an interface for creating an object but allows subclasses to alter the type of objects that will be created. In other words, the Factory Method lets a class delegate the responsibility of instantiating its objects to its subclasses.
2. Problem Statement
Consider a scenario where you're designing a user interface library. You want to provide a way to create buttons, but the exact appearance and behavior of the buttons should be customizable for different operating systems or themes.
3. Solution
The Factory Method Pattern allows defining a method for creating an object, but it's the responsibility of the derived class to implement this method and decide which class to instantiate. It provides flexibility and promotes loose coupling between classes.
4. Real-World Use Cases
1. GUI libraries where each OS provides a different implementation of a button, scrollbar, or window.
2. Payment gateway integration where each provider has its own method of processing payments.
5. Implementation Steps
1. Define an interface with a factory method.
2. Let concrete classes implement this factory method and decide which class to instantiate.
6. Implementation in Python
from abc import ABC, abstractmethod # Step 1: Creator class class ButtonFactory(ABC): @abstractmethod def create_button(self): pass # Concrete Creator class WindowsButtonFactory(ButtonFactory): def create_button(self): return WindowsButton() # Concrete Creator class LinuxButtonFactory(ButtonFactory): def create_button(self): return LinuxButton() # Product interface class Button(ABC): @abstractmethod def render(self): pass # Concrete Product class WindowsButton(Button): def render(self): return "Windows Button Rendered" # Concrete Product class LinuxButton(Button): def render(self): return "Linux Button Rendered" # Client Code factory = WindowsButtonFactory() button = factory.create_button() print(button.render())
Output:
Windows Button Rendered
Explanation:
1. We start by defining an abstract class ButtonFactory which declares an abstract factory method create_button.
2. WindowsButtonFactory and LinuxButtonFactory are concrete implementations of ButtonFactory. They implement the create_button method and decide which button to instantiate.
3. The Button abstract class represents the product interface, with a method render.
4. WindowsButton and LinuxButton are concrete implementations of the Button interface, providing their render logic.
5. In the client code, we use WindowsButtonFactory to create a Windows button and then render it.
7. When to use?
Use the Factory Method Pattern when:
1. A class cannot anticipate the type of objects it is supposed to create.
2. When subclasses are responsible for instantiating their objects.
3. To promote loose coupling by avoiding direct object creation in the application and instead delegating this responsibility to factory methods.
Design Pattern Related Python Source Code Examples:
Python string literals Python string length example Python String join() method example Python string split() method example Python String index() method example Python string find() method example Python string startswith() method example Python string endswith() method example Python String lower() method example Python String upper() method example Python string title() method example Python string capitalize() method example Python string islower() method example Python string istitle() method example Python string isupper() method example Python string swapcase() method example Python string strip() method example Python string replace() method example Python string isdigit() method example Python string isdecimal() method example Python string isnumeric() method example Python string isalpha() method example Python string isalnum() method example Write a python program to concatenate strings in different ways Python program to create a new string by appending s2 in the middle of s1 Split a given string on asterisk into several substrings and display each substring in Python Write a Python program to count all lower case, upper case, digits, and special symbols from a given string Write a python program to return a string such that the string is arranged from lowercase letters and then uppercase letters Write a Python Class to Reverse a String Word by Word Write a python class to implement pow(x, n) Write a python class to convert an integer to a Roman numeral Write a python program to find the factorial of a number using recursion Write a Python program to convert temperature in Celsius to Fahrenheit Write a Python program to find the largest number among the three input numbers Write a Python program to print only even numbers using the function Write a python program to filter integer, float, string from a list Write a python program to check whether the given number is greater than 50 and also divisible by 2 using nested if else Write a python program to demonstrate a simple class creation Write a python program to demonstrate the object as an argument Write a python program to demonstrate an object as an argument with default values Write a python program to demonstrate method overriding Write a Python program for Linear Search and Binary Search Python list - insert, remove, append, len, pop and clear example Write a python program to add two numbers Write a python program to get the python version Write a python program to check whether the first and last letters of the given word is vowel or not ? Write a python program to count the number of digits Write a python program to filter integer, float, string from a list Write a python program to find the average of 10 numbers Write a python program to traverse a list and print the values in it Write a python program to print first 20 natural numbers using while loop Write a python program to print the square of all numbers from 1 to 10 Write a python program to get the sum of digits Write a python program to print right angle triangle pattern using * Write a python program to remove vowels in a word Write a python program to find absolute value using function Wrtie a python program to demonstrate the use of variable length arguments Write a python program to demonstrate the use of default arguments Write a python program to demonstrate the use of keyword arguments Write a python program to print a simple list using functions Write a python program to find the max values in a list using function Given a string of odd length greater 7, return a string made of the middle three chars of a given String Arrange string characters such that lowercase letters should come first Write a Python program to Count all lower case, upper case, digits, and special symbols from a given string Write a Python program to Find all occurrences in a given string ignoring the case Given an input string, count occurrences of all characters within a string and return the details as dictionary Write a Python program to Split a given string on asterisk into several substrings and display each substring Write a Python program to Check whether the given string startswith 'h' Write a python program to concatenate strings in different ways Write a python program to return a string such that the string is arranged from lowercase letters and then uppercase letters Write a python program to repeat a givent string multiple times Write a python program to create a simple list and nested list with different datatypes Write a python program to add elements to an existing list from user input Write a python program to reverse a given list Write a python program to convert a list to tuple using tuple function Write a python program to check whether the user given input is equal to the current working directory or not Write a Python program for Linear Search and Binary Search Selection Sort Algorithm in Python Bubble Sort Algorithm in Python Bogo Sort Algorithm in Python Bucket Sort Algorithm in Python Comb Sort Algorithm in Python Counting Sort Algorithm in Python Heap Sort Algorithm in Python Insertion Sort Algorithm in Python Merge Sort Algorithm in Python Quick Sort Algorithm in Python Shell Sort Algorithm in Python Interpolation Search Algorithm in Python Stack Implementation in Python Queue Implementation in Python Deque Implementation in Python Singly Linked List Implementation in Python Doubly Linked List Implementation in Python Circular Linked List Implementation in Python PriorityQueue Implementation in Python Circular Queue Implementation in Python Binary Search Tree Implementation in Python Stack Implementation Using Linked List in Python Stack Implementation Using Doubly Linked List in Python Python - Convert Binary to Decimal Example Python - Convert Binary to Hexadecimal Example Python - Convert Binary to Octal Example Python - Convert Decimal to Binary Example Python - Convert Decimal to Octal Example Python Convert String to Int Python Convert String to DateTime Python Convert String to Date Python Convert String to JSON Python Convert String to Number Python Convert String to List Python Convert String to Float Python Convert String to Bytes Python Convert List to String Python Convert List to Set Python Convert List to Dictionary Python Convert List to Tuple Python Convert List to JSON Python Convert List to Array Python Convert List to String With Commas Python Convert List to Dataframe Python Convert Set to List Python Convert Set to String Python Convert Set to Tuple Python Convert Set to Dictionary Python Convert Set to JSON Python Convert Set to Comma Separated String Python Convert Dictionary to JSON Python Convert Dictionary to Dataframe Python Convert Dictionary to String Python Convert Dictionary to List Python Convert Dictionary Keys to List Python Convert Dictionary Values to List Python Convert Dictionary to Tuple Python Convert Array to String Python Convert Array to String With Commas Python Convert Array to List Python Convert Array to Set Python Convert Array to JSON Python Convert Array to Dictionary Python Convert Array to Tuple Python Convert Int to String Python Convert Int to Binary Python Convert Int to Float Python Convert Date to String Python Convert Date to Epoch Python Convert Date to Unix Timestamp Python Convert Date to DateTime Python Convert Date to DateTime Python Convert Date to Timestamp Python Convert Date String to DateTime Python Convert Date String to Epoch Python Convert Tuple to String Python Convert Tuple to List Python Convert Tuple to Dictionary Python Convert Tuple to Comma Separated String Python Convert Tuple to Array Python Convert Tuple to JSON Python Convert JSON to String Python Convert JSON to Dictionary Python Convert JSON to Array Python Convert JSON to XML Python Convert JSON to List Python Python Design Patterns
Comments
Post a Comment