Design Patterns in Java
A design patterns are well-proved solution for solving the specific problem/task.
Now, a question will be arising in your mind what kind of specific problem? Let me explain
by taking an example.
Problem Given:
Suppose you want to create a class for which only a single instance (or object) should be
created and that single object can be used by all other classes.
Solution:
Singleton design pattern is the best solution of above specific problem. So, every design
pattern has some specification or set of rules for solving the problems. What are those
specifications, you will see later in the types of design patterns.
But remember one-thing, design patterns are programming language independent
strategies for solving the common object-oriented design problems. That means, a design
pattern represents an idea, not a particular implementation.
By using the design patterns you can make your code more flexible, reusable and
maintainable. It is the most important part because java internally follows design patterns.
To become a professional software developer, you must know at least some popular
solutions (i.e. design patterns) to the coding problems.
Advantage of design pattern:
1. They are reusable in multiple projects.
2. They provide the solutions that help to define the system architecture.
3. They capture the software engineering experiences.
4. They provide transparency to the design of an application.
5. They are well-proved and testified solutions since they have been built upon the
knowledge and experience of expert software developers.
6. Design patterns don?t guarantee an absolute solution to a problem. They provide
clarity to the system architecture and the possibility of building a better system.
When should we use the design patterns?
We must use the design patterns during the analysis and requirement phase of
SDLC(Software Development Life Cycle).
Design patterns ease the analysis and requirement phase of SDLC by providing information
based on prior hands-on experiences.
Categorization of design patterns:
Basically, design patterns are categorized into two parts:
1. Core java (or JSE) Design Patterns.
2. JEE Design Patterns.
Core Java Design Patterns
In core java, there are mainly three types of design patterns, which are further divided into
their sub-parts:
[Link] Design Pattern
1. Factory Pattern
2. Abstract Factory Pattern
3. Singleton Pattern
4. Prototype Pattern
5. Builder Pattern.
2. Structural Design Pattern
1. Adapter Pattern
2. Bridge Pattern
3. Composite Pattern
4. Decorator Pattern
5. Facade Pattern
6. Flyweight Pattern
7. Proxy Pattern
3. Behavioral Design Pattern
1. Chain Of Responsibility Pattern
2. Command Pattern
3. Interpreter Pattern
4. Iterator Pattern
5. Mediator Pattern
6. Memento Pattern
7. Observer Pattern
8. State Pattern
9. Strategy Pattern
10. Template Pattern
11. Visitor Pattern
Do you know?
o Christopher Alexander was the first person who invented all the above Design
Patterns in 1977.
o But later the Gang of Four - Design patterns, elements of reusable object-
oriented software book was written by a group of four persons named as Erich
Gamma, Richard Helm, Ralph Johnson and John Vlissides in 1995.
o That's why all the above 23 Design Patterns are known as Gang of Four (GoF)
Design Patterns.
Creational design patterns
Creational design patterns are concerned with the way of creating objects. These design
patterns are used when a decision must be made at the time of instantiation of a class (i.e.
creating an object of a class).
But everyone knows an object is created by using new keyword in java. For example:
1. StudentRecord s1=new StudentRecord();
Hard-Coded code is not the good programming approach. Here, we are creating the instance
by using the new keyword. Sometimes, the nature of the object must be changed according
to the nature of the program. In such cases, we must get the help of creational design
patterns to provide more general and flexible approach.
Types of creational design patterns
There are following 6 types of creational design patterns.
1. Factory Method Pattern
2. Abstract Factory Pattern
3. Singleton Pattern
4. Prototype Pattern
5. Builder Pattern
6. Object Pool Pattern
8)