Introduction To Design Patterns
October 27th, 2009Pattern is a defined, used and tested solution for a know problem. Design patterns is all about re-use. Software design patterns evolved as a subject of study only when object oriented programming started becoming popular. OOPS and design patterns became inseparable.
In OOPS, we should have well defined boundaries for objects. That is every object should have its roles and responsibilities well defined. Then at next level, we should have a clear interaction plan between objects. If you design a OO software with the above principle, then by default you will be following some of the already defined design patterns.
A formal definition for design patterns, “A design pattern addresses a recurring design problem that arises in specific design situations and presents a solution to it” (Buschmann, et. al. 1996)
Java widely uses design patterns in its APIs. It started as early as Java 1.2 in java foundation classes. By then you can see the widespread use of commonly know design patterns in collections framework and IO packages. When I say commonly known design patterns, I mention about the set of 23 design patterns by Gang of Four (GOF). Gamma, Helm, Johnson and Vlissides known as Gang of Four (GOF) published a book “Design Patterns — Elements of Reusable Software” (1995) based on their series of technical meetings. It is one of the best seller in computer science books till date.
In China gang of four means different set of people. Jiang Qing (Mao Zedong’s fourth wife), Zhang Chunqiao, Yao Wenyuan, and Wang Hongwen were very popular leaders of cultural revolution. They almost seized power after Mao Zedong’s death. But they were finally arrested and imprisoned for life.
Our GOF divided the 23 design patterns into three types creational design patterns, structural design patterns and behavioral design patterns.
Creational design patterns can be used to instantiate objects. Instead of instantiating objects directly, depending on scenario either X or Y object can be instantiated. This will give flexibility for instantiation in high complex business logic situations.
Structural design patterns can be used to organize your program into groups. This segregation will provide you clarity and will enable you for easier maintainability.
Behavioral design patterns can be used to define the communication and control flow between objects.
Following this post, I have planned to write a series of article on these design patterns with java source code examples and UML diagrams. Looking forward to your comments.



Its really a good blog for the people who are looking for java tutorials.
I suggest all to go thru this.
And owner, plz give some more elaborated description for all the topics so,no need to go to another site for reading this.
Thanks Srikanth. I am working on elaborate and detailed tutorials nowadays. Also, I have plans to update already posted tutorials with more details and sample java source code.
Even i like all your elobrated description and all topics is giving depth knowledge .. Please explore also on j2ee tech like springs ..hibernate and also server side like weblogic , websphere
Regards
Nilesh
Hi Joe,
Nice explanation. Can you please post a topic that covers entire Design Pattern in one stroke. This need not be an elaborate one, but would be useful for those who are new to Design Pattern. Just to understand each in a simpler way. If base is strong, probably we can explore more in days to come.
Thanks and Regards
Srikanth S
Hi Srikanth,
I am working on posting about all design patterns. But doing everything in one go will be quite difficult. You can surely expect me to cover as much as design patterns quite soon.
Thanks,
Joe.
Hey Srikanth,
When can we expect more on Design pattern ?
Really waiting for the same.
Thanks in advance