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

Design Patterns

The document discusses design patterns for programmers. It begins by defining normal classes, abstract classes, and interfaces. It then discusses common design patterns like Factory Method, Abstract Factory, Singleton, Strategy, Decorator, Composite, Adapter, Command, and Template Method. It explains when to use different patterns and provides examples. It notes that patterns allow reusable solutions to common problems. The presentation encourages learning patterns from books and websites and provides contact information for the presenter.
Copyright
© © All Rights Reserved
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
165 views

Design Patterns

The document discusses design patterns for programmers. It begins by defining normal classes, abstract classes, and interfaces. It then discusses common design patterns like Factory Method, Abstract Factory, Singleton, Strategy, Decorator, Composite, Adapter, Command, and Template Method. It explains when to use different patterns and provides examples. It notes that patterns allow reusable solutions to common problems. The presentation encourages learning patterns from books and websites and provides contact information for the presenter.
Copyright
© © All Rights Reserved
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
You are on page 1/ 60

Design Patterns

for 70% of genious programmers

Aamir Khan
Solution Architect
Design Patterns
for 70% of programmers in the world

Saurabh Verma
Solution Architect
I blog at http://www.domaindrivendesign.info
Agenda
• Do you OOPs?

• Design Patterns? Why

• Design Patterns? What

• Design Patterns? How

• I hate my job
Normal Classes vs Abstract Classes vs Interfaces
Normal Class: This is a normal class 

Abstract Class: These cannot be instantiated directly. They may


provide partial implementations and exists solely for the purpose of
inheritance.

Interfaces: Defines a contract. Concrete implementations needs to


implement each property and method as per contract.

Shut up !
We know all this
Million Dollar Question? What is Why?

Employee

Developer Manager

Associate Lead Product Project


Developer Developer Manager Manager
Normal Class vs Abstract Class?

If a particular class is a entity


which is not required to be
instantiated by the
application directly, go for
Abstract Class

Employee can be abstract class


Abstract Class vs Interfaces?

If a particular class contains


any default behavior, go for
Abstract Class
If every concrete class has its
own implementation, go for
Interfaces

Work – Management, Programming


MOVIES & ACTORS

Salman Khan riding bike Shahrukh Khan

Actors in a Movie
IS-A vs HAS-A vs CAN-DO
IS-A Inheritance
Shahrukh Khan is an ACTOR

HAS-A Composition
Movie has ACTORS

CAN-DO Interfaces
Salman Khan can DRIVE BIKE
What is a Pattern

• An 'element of reusable software’

• A design pattern systematically names, motivates, and explains a


general design that addresses a recurring design problem in object-
oriented systems.

• It describes the problem, the solution, when to apply the solution, and
its consequences.

• It also gives implementation hints and examples. The solution is a


general arrangement of objects and classes that solve the problem. The
solution is customized and implemented to solve the problem in a
particular context.
History of Software Patterns

1987 - Cunningham and Beck used Alexander’s ideas to


develop a small pattern language for Smalltalk

1990 - The Gang of Four (Gamma, Helm, Johnson and


Vlissides) begin work compiling a catalog of design patterns

1991 - Bruce Anderson gives first Patterns Workshop at


OOPSLA

1993 - Kent Beck and Grady Booch sponsor the first


meeting - what is now known as the Hillside Group

1995 - The Gang of Four (GoF) publish the Design Patterns


book
What Wikipedia says,

• A design pattern is a general


repeatable solution to a commonly
occurring problem in software design.

• A design pattern is not a finished


design that can be transformed directly
into code.

• Algorithms are not thought of as


design patterns.
Let’s understand design patterns by purpose
Let’s understand the purpose

Final Product Creational Patterns

Behavioral Patterns

Structural Patterns

+
Let’s understand the purpose
Creational

• Concerns the process of object creation

Structural

• Deal with the composition of classes /objects

Behavioral

• Characterize the ways in which classes/objects


interact and distribute responsibility
Design Patterns as per their PURPOSE

Creational Structural Behavioral


Factory Method Façade Strategy

Abstract Factory Decorator Template Method

Singleton Composite Command

Builder Adapter Iterator

Prototype Proxy Observer


Creational Patterns
Factory Method
Factory Method
Define an interface for creating an object, but let subclass decide which
class to instantiate

• Prevents creation of any additional instances, while simultaneously


allowing global access

• Creation can be delayed until it is actually required


Factory Method
System.Data.SqlClient.SqlClientFactory
Abstract Factory Pattern
Abstract Factory Pattern
Provide an interface for creating families of related or dependent
objects without specifying their concrete classes.

• Provides creation of families of related or dependent objects without


specifying their concrete class
Abstract Factory Method
System.Data.Common.DbProviderFactories
Singleton Pattern
Singleton Pattern
Ensure a class has only one instance, and provide a global point to it.

• Prevents creation of any additional instances, while simultaneously


allowing global access

• Creation can be delayed until it is actually required

Single Washroom
between
4 persons
Singleton Pattern
System.Data.SqlClient.SqlClientFactory
Structural Patterns
Façade Pattern
Façade Pattern
Provide a unified interface to set of interfaces in a subsystem.

• Is generally one side of the exterior of a building, especially the front

• Origin from a FRENCH word means “face” or “front”


Façade Pattern
Its all about the service
Decorator Pattern
Decorator Pattern
Attach additional responsibilities to an object dynamically.

• Flexible alternative to subclassing for extending functionality

• Allows dynamic and transparent addition and removal of


responsibilities without affecting object

simple actress in role of modern girl in role of homely girl


(act) (go out and act) (be in home and act)
Decorator Pattern
System.IO.BufferedStream:Stream
Composite Pattern
Composite Pattern
Compose objects into tree structures to represent part-whole
hierarchies

• When dealing with collections of objects, there are often operations


that are appropriate for both a single object and the entire collection

• Treats individual objects and composition of objects uniformly

Example:
a) Every object “IS-A” shape
b) Every shape “HAS-A” draw behavior
Composite Pattern
System.Web.UI.Control (Render Mechanism)
Composite Pattern
System.Web.UI.Control

WebControls.WebControl

WebControls.BaseDataList

WebControls.DataGrid
Adapter Pattern
Adapter Pattern
Convert the interface of a class into another interface clients expect

• Lets classes work together that couldn’t work otherwise

• Works good for making compliance

Legacy
Application
Component
Adapter Framework
Adapter Pattern
GearsTypelib.HtmlDialogHostClass
(Interop.GearsTypelib)
Decorator vs Adapter
Decorator looks like Adapter which “decorates” an existing class to
make it compatible. Though, Decorator doesn’t wants you to decorate
every method in the Adapted class. But who has stopped from doing it.

“Never underestimate the power of a developer”


Decorator vs Façade
Façade is a way of hiding a complex system inside a simpler interface,
whereas Decorator adds function by wrapping a class.
Behavioural Patterns
Command Pattern
Command Pattern
Encapsulate a request as an object, thereby letting you parameterize
clients with different requests, queue or log requests.

• If all commands can service a specific request, they can be entertained


by the invoker

• Concrete command performs the action on Receiver

• Encapsulate method invocation

One Receiver
and
Multiple actions
Command Pattern
System.ComponentModel.Design.MenuCommand
Command Pattern
Saurabh.Learning.DesignPatterns.Patterns.CommandPattern
Strategy Pattern
Strategy Pattern
Define strategies for a performing a behavior and change them
dynamically as per requirement

• This lets the algorithm vary independently from clients that uses it

• It is about choice, which affects outcomes

One behavior
and
Multiple strategies
Strategy Pattern
System.Collections.ArrayList
Template Method
Template Method
Define the skeleton of an algorithm in an operations, deferring some
steps to subclass

• Main algorithm skeleton is defined in a base class and subclasses can


then plug in their own details without affecting the algorithm itself

• Uses Inheritance – Abstract Class defines the template (algorithm) and


Concrete class manages the implementation.

• Template uses the implementation on demand


Template Method
Strategy Pattern vs Template Method
• Strategy allows callers to change the algorithm or order of steps
whereas Template method allow steps to be modified

• Strategy uses Interfaces whereas Template method uses Inheritance


I hate my job
Top 5 ADVICES NOT TO FOLLOW
5. Write lot of comments

4. Use Properties rather than fields

3. No shortcuts or quick fixes, otherwise you'll never go


back and fix things

2. Use error codes instead of exceptions

1. Design first, then code


Reflect when you want 
Answers, anybody?
CONTENT STOLEN FROM 
BOOKS:
Head First Design Patterns
Design Patterns in C#
Design Patterns
WEBSITES:
Wikipedia, MSDN, doFactory and GOOGLE
Learn it all, at my blog
http://www.domaindrivendesign.info

Don’t contact me at,


saurabh.net [at] gmail.com

Saurabh Verma
Solution Architect

You might also like