Design Patterns are very popular among software developers. A design
pattern is a well described solution to a common software problem. I have
written extensively on java design patterns. You can download PDF eBook
(130+ pages) by subscribing to our newsletter.
Java
Design Patterns
Some of the benefits of using design
patterns are:
- Design Patterns are already defined and provides industry standard approach to solve a recurring problem, so it saves time if we sensibly use the design pattern. There are many java design patterns that we can use in our java based projects.
- Using design patterns promotes reusability that leads to more robust and highly maintainable code. It helps in reducing total cost of ownership (TCO) of the software product.
- Since design patterns are already defined, it makes our code easy to understand and debug. It leads to faster development and new members of team understand it easily.
Java Design Patterns
are divided into three categories – creational, structural, and behavioral design patterns.
Creational Design Patterns
Creational design patterns provide solution to instantiate a object in the best possible way for specific situations.· Singleton Pattern
Singleton pattern restricts the instantiation of a class and ensures that only one instance of the class exists in the java virtual machine. It seems to be a very simple design pattern but when it comes to implementation, it comes with a lot of implementation concerns. The implementation of Singleton pattern has always been a controversial topic among developers. Check out Singleton Design Pattern to learn about different ways to implement Singleton pattern and pros and cons of each of the method. This is one of the most discussed java design patterns.· Factory Pattern
Factory design pattern is used when we have a super class with multiple sub-classes and based on input, we need to return one of the sub-class. This pattern take out the responsibility of instantiation of a class from client program to the factory class. We can apply Singleton pattern on Factory class or make the factory method static. Check out Factory Design Pattern for example program and factory pattern benefits. This is one of the most widely used java design pattern.· Abstract Factory Pattern
Abstract Factory pattern is similar to Factory pattern and it’s factory of factories. If you are familiar with factory design pattern in java, you will notice that we have a single Factory class that returns the different sub-classes based on the input provided and factory class uses if-else or switch statement to achieve this.· Builder Pattern
This pattern was introduced to solve some of the problems with Factory and Abstract Factory design patterns when the Object contains a lot of attributes. Builder pattern solves the issue with large number of optional parameters and inconsistent state by providing a way to build the object step-by-step and provide a method that will actually return the final Object. Check out Builder Pattern for example program and classes used in JDK.· Prototype Pattern
Prototype pattern is used when the Object creation is a costly affair and requires a lot of time and resources and you have a similar object already existing. So this pattern provides a mechanism to copy the original object to a new object and then modify it according to our needs. This pattern uses java cloning to copy the object.Structural Design Patterns
Structural patterns provide different ways to create a class structure, for example using inheritance and composition to create a large object from small objects.1. Adapter Pattern
Adapter design pattern is one of the structural
design pattern and its used so that two unrelated interfaces can work together.
The object that joins these unrelated interface is called an Adapter. As a real
life example, we can think of a mobile charger as an adapter because mobile
battery needs 3 volts to charge but the normal socket produces either 120V (US)
or 240V (India). Composite Pattern
Composite pattern is one of the Structural design
pattern and is used when we have to represent a part-whole hierarchy. When we
need to create a structure in a way that the objects in the structure has to be
treated the same way, we can apply composite design pattern.
2. Proxy Pattern
Proxy pattern intent is to “Provide a surrogate or
placeholder for another object to control access to it”. The definition itself
is very clear and proxy pattern is used when we want to provide controlled
access of a functionality.
3. Flyweight Pattern
Flyweight design pattern is used when we need to
create a lot of Objects of a class. Since every object consumes memory space
that can be crucial for low memory devices, such as mobile devices or embedded
systems, flyweight design pattern can be applied to reduce the load on memory
by sharing objects.
4. Facade Pattern
Facade Pattern is used to help client applications
to easily interact with the system. Suppose we have an application with set of
interfaces to use MySql/Oracle database and to generate different types of
reports, such as HTML report, PDF report etc. So we will have different set of
interfaces to work with different types of database. Bridge
Pattern
5 .Bridge Pattern
When we have interface hierarchies
in both interfaces as well as implementations, then bridge design pattern is
used to decouple the interfaces from implementation and hiding the
implementation details from the client programs. Like Adapter pattern, its one
of the Structural design pattern.
No comments:
Post a Comment