design patterns for 70% of programmers in the world
TRANSCRIPT
Design Patternsfor 70% of genious programmers
Aamir KhanSolution Architect
Design Patternsfor 70% of programmers in the world
Saurabh VermaSolution 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 InterfacesNormal 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?
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 forInterfacesWork – Management, Programming
MOVIES & ACTORS
Shahrukh KhanSalman Khan riding bike
Actors in a Movie
IS-A InheritanceShahrukh Khan is an ACTOR
HAS-A CompositionMovie has ACTORS
CAN-DO InterfacesSalman Khan can DRIVE BIKE
IS-A vs HAS-A vs CAN-DOIS-A Inheritance
Shahrukh Khan is an ACTOR
HAS-A CompositionMovie has ACTORS
CAN-DO InterfacesSalman 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
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
+
Creational Patterns
Structural Patterns
Final Product
Behavioral Patterns
Let’s understand the purpose
Design Patterns as per their PURPOSE
Creational Patterns
Factory Method
Factory MethodDefine 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 MethodSystem.Data.SqlClient.SqlClientFactory
Abstract Factory Pattern
Abstract Factory PatternProvide 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 MethodSystem.Data.Common.DbProviderFactories
Singleton Pattern
Singleton PatternEnsure 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
Singleton PatternSystem.Data.SqlClient.SqlClientFactory
Structural Patterns
Façade Pattern
Façade PatternProvide 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 PatternIts all about the service
Decorator Pattern
Decorator PatternAttach 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(act)
in role of modern girl(go out and act)
in role of homely girl(be in home and act)
Decorator PatternSystem.IO.BufferedStream:Stream
Composite Pattern
Composite PatternCompose 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” shapeb)Every shape “HAS-A” draw behavior
Composite PatternSystem.Web.UI.Control (Render Mechanism)
Composite Pattern
Adapter Pattern
Adapter PatternConvert the interface of a class into another interface clients expect
• Lets classes work together that couldn’t work otherwise
• Works good for making compliance
ApplicationFrameworkAdapter
LegacyComponent
Adapter PatternGearsTypelib.HtmlDialogHostClass
(Interop.GearsTypelib)
Decorator vs AdapterDecorator 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çadeFaç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 PatternEncapsulate 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 invocationOne Receiver
andMultiple actions
Command PatternSystem.ComponentModel.Design.MenuCommand
Command PatternSaurabh.Learning.DesignPatterns.Patterns.CommandPa
ttern
Strategy Pattern
Strategy PatternDefine 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
Strategy PatternSystem.Collections.ArrayList
Template Method
Template MethodDefine 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
Reflect when you want
Answers, anybody?
CONTENT STOLEN FROM BOOKS:Head First Design PatternsDesign Patterns in C#Design PatternsWEBSITES: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 VermaSolution Architect