Please take this interface for creating families or dependant objects without specifying their concrete classes. Abstract factory design pattern
This is a continuation of the software design pattern series. You can checkout the previous posts from my-blog
Abstract factory design pattern
In Abstract factory design pattern, the family of different Products can be grouped together and be instantiated without the client specifying the concrete class.
How it is different from Simple Factory pattern?
In this pattern, just like the Products implement from the Product interface, all the types of Products will be grouped together in different concrete Factories which will be implementing a factory interface. The client will be using the Factory interface without caring what implementation it is.
Cool. So how to implement Abstract Factory design pattern?
In Abstract Factory design pattern, four main component gets involved excluding the Client.
- Product Interfaces
- Concrete Product implementations
- Factory Interface
- Concrete Factory implementations
The interface which all the products that can be instantiated should be implementing. Example: Meat
-> Concrete Product implementation
The different Concrete classes implementing the different Product interfaces. Example: WesternStyleMeat, IndianStyleMeat
-> Factory Interface
The interface which should be implemented by all the factories which is trying to create/group a family of Products.
-> Concrete Factory implementations
The Concrete classes for each different family groups which should be implementing the factory interface.
Let’s take example related to Pizzzza itself. Why? Cuz I personally love them.
Ok, to keep it simple lets take the ingredients of Pizza. Some of the most important ones are
Consider there are Western type of ingredients and as well as Indian. So it’s kinda two different family of ingredients.
Consider the Western type includes ingredients like
and the Indian type includes
So we could group them to two different factories. Check the sample code.
photo courtesy: link
We can now group all the different family of products together and keep on extending to more families too. Thanks to abstract factory design pattern for that ;)
Ps: Special Thanks to Head First Design Patterns
Thank you. Hope this helps. Looking forward to more learning and sharing. Cheers :)
Connect, share and text me about your views. We can have some discussion :)