Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
22 views20 pages

Design Patterns

The document discusses design patterns including their importance, classification, and examples of iterator, model-view-controller, and command patterns. Design patterns provide general reusable solutions to common programming problems and improve code quality and maintainability.

Uploaded by

Saurav Sarmah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views20 pages

Design Patterns

The document discusses design patterns including their importance, classification, and examples of iterator, model-view-controller, and command patterns. Design patterns provide general reusable solutions to common programming problems and improve code quality and maintainability.

Uploaded by

Saurav Sarmah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 20

Design Patterns

Design Patterns
• A design pattern is
– A general repeatable solution to a commonly occurring problem in
software design
– A design pattern isn't a finished design that can be transformed
directly into code
– A description or template for how to solve a problem that can be
used in many different situations
Importance of Design Patterns
• Design patterns can speed up the development process by providing tested,
proven development paradigms
• Reusing the design patterns helps to prevent subtle issues that can cause
major problems and it also improves code readability
• Design pattern provides general solutions, documented in a format that
doesn’t specifically tied to a particular problem
• In addition to that patterns allows developers to communicate well-known,
well-understood names for software interactions
• Common design patterns can be improved over time, making them more
robust than ad-hoc design
• A standard solution to a common programming problem enables large scale
Classification of Design Patterns
• Can be classified into three types
– Creational design patterns
– Structural design patterns
– Behavioural design patterns
Classification of Design Patterns
Creational design patterns
• Are concerned with the way of creating objects
• Can be further divided into
– Class-creation patterns
• Use inheritance effectively in the instantiation process
– Object-creation patterns
• Use delegation effectively to get the job done
Structural Design Patterns
• Are concerned with how classes and objects can be composed to
form larger structures
• Simplify the structure by identifying relationships
• Focus on how the classes inherit from each other and how they are
composed of other classes
• Use inheritance to compose interfaces
• Define ways to compose objects to obtain new functionality
Behavioral Design Patterns
• Are concerned with the interaction and responsibility of objects
• The interaction between the objects should be in such a way that
they can easily communicate with each other and still should be
loosely coupled
Iterator Design Pattern
• Iterator design pattern is used
– To access and traverse an aggregate object without exposing its
internal structure
– To provide a way to access the elements of an aggregate object
sequentially without exposing its underlying representation
Iterator Design Pattern
• Problem
– Need to access the elements of an aggregate object without
exposing the internal details of object
– Accessing elements of object is required with traversal, without
exposing the internal structure of aggregate object
– Should be applicable to different data structures which provide
different algorithms for accessing and traversing
• Solution
– Provide a way to access and traverse an aggregate object by giving
responsibility of access and traversal to another object
– There can be common interface, which can be applicable for different
data structures to provide interface for accessing and traversing
– There will be separate objects having this interface and will have
responsibility to access the elements and traversal of aggregate objects
Structure
• Participant classes
– Aggregate class
• Provides the interface for creating
Iterator object
– Iterator class
• Provides the interface for accessing
the elements and traversal of the
aggregate object
– ConcreteIterator class
• Implements the interface of Iterator
class and keeps track of current item
of aggregate object
– ConcreteAggregate class
• Implements the method
CreateIterator()
Working
• the Client class refers to
– The Aggregate interface for creating an Iterator object
(createIterator())
– The Iterator interface for traversing an Aggregate object
• The ConcreteIterator class implements the Iterator interface by
accessing the ConcreteAggregate class

• The run-time interactions


• The Client object calls createIterator() on an ConcreteAggregate
object which creates an ConcreteIterator object and returns it to
the Client
• The Client uses then ConcreteIterator to traverse the elements of
the Aggregate object
Model View Controller Design Pattern (MVC)

• Model View Controller is


– A predictable software design pattern that can be used across
many frameworks with many programming languages
– Used to design web applications and mobile apps
Architecture :: Model View Controller
• The architecture components of the MVC pattern are designed
– To handle different aspects of an application in development
• The MVC design pattern serves
• To separate the presentation layer from the business logic
Architecture :: Model View Controller
• The architecture components of the MVC pattern are designed
– To handle different aspects of an application in development
• The MVC design pattern serves
• To separate the presentation layer from the business logic
Architecture :: Model View Controller
• Separates an application into three main logical components
– Model
• stores & manages data
• Often a database
– View
• Graphical User Interface
• A visual representation of the
data like a chart, diagram, form
• contains all functionality that directly interacts with the user
– Controller
• Brains of the application
• Connects the model and view
• Receives input from view, uses logic to translate the input to a demand
for the model, the model grabs the data, the controller passes data
from the model back to the view for the user to see in a nice display
Benefits :: Model View Controller Pattern
• Traditionally used for Graphical user interfaces (GUIs)
• Popular in web applications
• MVC responsibilities are divided between the client & server,
compatible with web application architecture
• Helpful for planning development
• The code is divided based on function to either the model, view, or
controller bucket
• Loosely Coupled
• Removes unnecessary dependencies
• Reusable without modification
• Code reuse
• Extendable code
• High Cohesion
Command Design Pattern
• Command Design Pattern
• Is an Object behavioural design pattern that decouples sender
and receiver by encapsulating a request as an object
• Thereby letting clients to be parameterized with different
requests and support undoable operations

• Command Design Pattern


– Encapsulates all the requests coming from the invoker in objects,
passing them to the receiver, and letting the receiver take actions

• Command Design pattern can be used


• To produce readable, maintainable, and extensible code
– Widely used in sophisticated software
Command Design Pattern

• Client: Creates a ConcreteCommand object and sets its receiver


• Invoker: Uses the Command object to carry out the request
• Receiver: Contains the real operational logic that needs to be
performed on the data
• Command: An interface for executing an action
• ConcreteCommand: Specifies the binding between a Receiver (action
taker) and an action invoker. This object is responsible for executing
the corresponding operation on the Receiver
Benefits of Command Design Pattern
• Command Pattern is
– A very good way of decreasing the coupling between the sender
and receiver

• While implementing the Command design pattern


– The Command is just a link between the sender and receiver
– Only tells the receiver what the sender is expecting
– Never alters the logic of the sender and receiver in any way

• Command pattern encapsulates request


• Thereby it can be used to record state, implement Undo and
redo functionality, Queuing a request, etc.

• Command Pattern
• Makes it easy to add new commands.
• New functionality is added by creating a new code

You might also like