0% found this document useful (0 votes)
224 views

Design Patterns in Java

This document discusses design patterns in Java. It describes 23 common design patterns organized into creational, structural, and behavioral categories. For each pattern, it provides a brief description and links to a main article, code example, and discussion of usage in Java. The patterns range from very commonly used ones like Singleton, Observer, and Strategy to less commonly used ones like Flyweight and Memento.

Uploaded by

Ashish Singh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
224 views

Design Patterns in Java

This document discusses design patterns in Java. It describes 23 common design patterns organized into creational, structural, and behavioral categories. For each pattern, it provides a brief description and links to a main article, code example, and discussion of usage in Java. The patterns range from very commonly used ones like Singleton, Observer, and Strategy to less commonly used ones like Flyweight and Memento.

Uploaded by

Ashish Singh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

17/08/2020 Design Patterns in Java

  

DESIGN
PATTERNS

Java Examples
Creational Patterns

Abstract Factory   
Lets you produce families of related objects without specifying their concrete classes.

 Main article  Code example


 Usage in Java

Builder   
https://refactoring.guru/design-patterns/java 1/6
17/08/2020 Design Patterns in Java

Lets you construct complex objects step by step. The pattern allows you to produce
different types and representations of an object using the same construction code.

 Main article  Code example


 Usage in Java

Factory Method   
Provides an interface for creating objects in a superclass, but allows subclasses to alter
the type of objects that will be created.

 Main article  Code example

 Usage in Java

Prototype   
Lets you copy existing objects without making your code dependent on their classes.

 Main article  Code example

 Usage in Java

Singleton   
Lets you ensure that a class has only one instance, while providing a global access point
to this instance.

 Main article  Naïve Singleton


 Usage in Java  Thread-safe Singleton

Structural Patterns

Adapter   
Allows objects with incompatible interfaces to collaborate.

 Main article  Code example


 Usage in Java

Bridge   
https://refactoring.guru/design-patterns/java 2/6
17/08/2020 Design Patterns in Java

Lets you split a large class or a set of closely related classes into two separate
hierarchies—abstraction and implementation—which can be developed independently
of each other.

 Main article  Code example


 Usage in Java

Composite   
Lets you compose objects into tree structures and then work with these structures as if
they were individual objects.

 Main article  Code example


 Usage in Java

Decorator   
Lets you attach new behaviors to objects by placing these objects inside special
wrapper objects that contain the behaviors.

 Main article  Code example


 Usage in Java

Facade   
Provides a simplified interface to a library, a framework, or any other complex set of
classes.

 Main article  Code example


 Usage in Java

Flyweight   
Lets you fit more objects into the available amount of RAM by sharing common parts of
state between multiple objects instead of keeping all of the data in each object.

 Main article  Code example


 Usage in Java

Proxy   

https://refactoring.guru/design-patterns/java 3/6
17/08/2020 Design Patterns in Java

Lets you provide a substitute or placeholder for another object. A proxy controls access
to the original object, allowing you to perform something either before or after the
request gets through to the original object.

 Main article  Code example

 Usage in Java

Behavioral Patterns
Chain of Responsibility   
Lets you pass requests along a chain of handlers. Upon receiving a request, each
handler decides either to process the request or to pass it to the next handler in the
chain.

 Main article  Code example

 Usage in Java

Command   
Turns a request into a stand-alone object that contains all information about the
request. This transformation lets you parameterize methods with different requests,
delay or queue a request's execution, and support undoable operations.

 Main article  Code example

 Usage in Java

Iterator   
Lets you traverse elements of a collection without exposing its underlying
representation (list, stack, tree, etc.).

 Main article  Code example

 Usage in Java

Mediator   
Lets you reduce chaotic dependencies between objects. The pattern restricts direct
communications between the objects and forces them to collaborate only via a mediator
object.

 Main article  Code example


https://refactoring.guru/design-patterns/java 4/6
17/08/2020 Design Patterns in Java

 Usage in Java

Memento   
Lets you save and restore the previous state of an object without revealing the details of
its implementation.

 Main article  Code example

 Usage in Java

Observer   
Lets you define a subscription mechanism to notify multiple objects about any events
that happen to the object they're observing.

 Main article  Code example

 Usage in Java

State   
Lets an object alter its behavior when its internal state changes. It appears as if the
object changed its class.

 Main article  Code example

 Usage in Java

Strategy   
Lets you define a family of algorithms, put each of them into a separate class, and make
their objects interchangeable.

 Main article  Code example

 Usage in Java

Template Method   
Defines the skeleton of an algorithm in the superclass but lets subclasses override
specific steps of the algorithm without changing its structure.

 Main article  Code example


 Usage in Java

https://refactoring.guru/design-patterns/java 5/6
17/08/2020 Design Patterns in Java

Visitor   
Lets you separate algorithms from the objects on which they operate.
Home   
Refactoring
 Main article  Code example
Design Patterns
 UsageContent
Premium in Java
Forum
Feedback

 2014-2020 Refactoring.Guru. All rights reserved.


Khmelnitske shosse 19 / 27, Kamianets-Podilskyi, Ukraine, 32305
Oleksandr Shvets, dba "Refactoring.Guru", registration number 3164707299, Ukraine.
Email: [email protected], Tel: +380976833155

 Illustrations by Dmitry Zhart

Terms & Conditions


Privacy Policy

https://refactoring.guru/design-patterns/java 6/6

You might also like