Design Patterns For 70% Of Programmers In The World
This presentation is for everyone who wants to understand design patterns
For downloading the presentation, visit http://www.domaindrivendesign.info
2986 views | comments | 6 favorites | 0 downloads | 7 embeds (Stats)
More Info
This slideshow is Public
Total Views: 2986 on Slideshare: 2839 from embeds: 147
Most viewed embeds (Top 5):
More
Slideshow Transcript
- Slide 1: Design Patterns
for 70% of genious programmers
Aamir Khan
Solution
Architect
- Slide 2: Design Patterns
for 70% of programmers in the
world
Saurabh Verma
Solution Architect
I blog at http://www.domaindrivendesign.info
- Slide 3: Agenda
• Do you OOPs?
• Design Patterns? Why
• Design Patterns? What
• Design Patterns? How
• I hate my job
- Slide 4: 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
- Slide 5: Million Dollar Question? What is Why?
- Slide 6: 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
- Slide 7: 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
- Slide 8: MOVIES & ACTORS
Salman Khan riding bike Shahrukh Khan
Actors in a Movie
- Slide 9: 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
- Slide 10: 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.
- Slide 11: History of Software Patterns
- Slide 12: 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.
- Slide 13: Let’s understand design patterns by
purpose
- Slide 14: Let’s understand the purpose
Final Product Creational Patterns
Behavioral
Patterns
Structural Patterns
+
- Slide 15: Let’s understand the purpose
- Slide 16: Design Patterns as per their PURPOSE
- Slide 17: Creational Patterns
- Slide 18: Factory Method
- Slide 19: 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
- Slide 20: Factory Method
System.Data.SqlClient.SqlClientFactory
- Slide 21: Abstract Factory Pattern
- Slide 22: 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
- Slide 23: Abstract Factory Method
System.Data.Common.DbProviderFactories
- Slide 24: Singleton Pattern
- Slide 25: 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
- Slide 26: Singleton Pattern
System.Data.SqlClient.SqlClientFactory
- Slide 27: Structural Patterns
- Slide 28: Façade Pattern
- Slide 29: 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”
- Slide 30: Façade Pattern
Its all about the service
- Slide 31: Decorator Pattern
- Slide 32: 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)
- Slide 33: Decorator Pattern
System.IO.BufferedStream:Stream
- Slide 34: Composite Pattern
- Slide 35: 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:
b)Every object “IS-A” shape
c)Every shape “HAS-A” draw behavior
- Slide 36: Composite Pattern
System.Web.UI.Control (Render Mechanism)
- Slide 37: Composite Pattern
- Slide 38: Adapter Pattern
- Slide 39: 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
- Slide 40: Adapter Pattern
GearsTypelib.HtmlDialogHostClass
(Interop.GearsTypelib)
- Slide 41: 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”
- Slide 42: 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.
- Slide 43: Behavioural Patterns
- Slide 44: Command Pattern
- Slide 45: 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
- Slide 46: Command Pattern
System.ComponentModel.Design.MenuCommand
- Slide 47: Command Pattern
Saurabh.Learning.DesignPatterns.Patterns.CommandPattern
- Slide 48: Strategy Pattern
- Slide 49: 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
- Slide 50: Strategy Pattern
System.Collections.ArrayList
- Slide 51: Template Method
- Slide 52: 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
- Slide 53: Template Method
- Slide 54: 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
- Slide 55: I hate my job
- Slide 56: Top 5 ADVICES NOT TO FOLLOW
- Slide 57: Reflect when you want
- Slide 58: Answers, anybody?
- Slide 59: CONTENT STOLEN FROM
BOOKS:
Head First Design Patterns
Design Patterns in C#
Design Patterns
WEBSITES:
Wikipedia, MSDN, doFactory and GOOGLE
- Slide 60: Learn it all, at my blog
http://www.domaindrivendesign.info
Don’t contact me at,
saurabh.net [at] gmail.com
Saurabh Verma
Solution Architect