Intro to Design Patterns
Funu Joel
Overview
★ What design patterns are.
★ Why they are important.
★ Some OO basics and Design Principles
★ Classifications of Design Patterns
★ Examples
What are Design Patterns?
Definitions
★ A pattern describes a problem which occurs over and
over again in our environment, and then describes the
core of the solution to that problem, in such a way that
you can use this solution a million times. (Alexander,
1977).
★ A design pattern is a general, reusable solution to a
common problem in software design.(gof, 1995).
Elements of a pattern design
★ The pattern name
○ It is used to describe a design problem, its solutions and
consequences in a word or two.
★ The problem
○ It describes when to apply the pattern.
★ The solution
○ It describes the elements that make up the design, their
relationships, responsibilities and collaborations
★ The consequences.
○ the results an tradeoffs of applying the pattern
Why are they important?
Benefits of design patterns
★ They provide proven solutions to software
development issues.
★ They make communications between
developers more efficient.
★ They make it easier to change and maintain
software.
Benefits of design patterns
★ They prevent from wasting your time hacking
your way into a solution.
★ They shift your level of thinking to higher
perspective.
★ They enable design efficient and scalable
applications.
OO basics and design principles
objected oriented basics
★ Abstraction
★ Encapsulation
★ Polymorphism
★ Inheritance
object oriented design principles
★ Separate what varies from what stays the
same .
★ Favor composition over inheritance.
★ Always program to interfaces not
implementations.
principles cont'd
★ Strive for loosely coupled design between
objects.
★ Classes should be open to extension but
closed for modification.(open-close principle)
Classifications of Design Patterns
Classifications
★ Creational Design Patterns
★ Behavioural Design Patterns
★ Structural Design Patterns
Creational Patterns
“These are design patterns that deal
with object creation mechanisms.”
Types of creational patterns
★ Factory method pattern
★ Abstract factory pattern
★ Builder pattern
★ Prototype pattern
★ Singleton pattern
Factory method pattern
“ ”
UML representation
Code representation
Behavioral Patterns
“are patterns that identify common
communication patterns between objects and
realize them to increase flexibility in these
communication.”
Types of behavioral patterns
★ Strategy
★ Observer
★ State
★ Command
★ Iterator
★ Mediator
★ Memento
★ Template method
★ Visitor
Strategy Pattern
“ ”
UML representation
Structural Patterns
“these are patterns that identify simple
ways to realize relationships between
entities.”
Types of structural patterns
★ Adapter
★ Bridge
★ Decorator
★ Composite
★ Facade
★ Flyweight
★ Proxy
Proxy Pattern
“allows you to provide an interface to
other objects by creating a wrapper
class as the proxy ”
UML representation

Design Patterns (by Joel Funu at DevCongress 2013)

  • 1.
    Intro to DesignPatterns Funu Joel
  • 2.
    Overview ★ What designpatterns are. ★ Why they are important. ★ Some OO basics and Design Principles ★ Classifications of Design Patterns ★ Examples
  • 3.
    What are DesignPatterns?
  • 4.
    Definitions ★ A patterndescribes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times. (Alexander, 1977). ★ A design pattern is a general, reusable solution to a common problem in software design.(gof, 1995).
  • 5.
    Elements of apattern design ★ The pattern name ○ It is used to describe a design problem, its solutions and consequences in a word or two. ★ The problem ○ It describes when to apply the pattern. ★ The solution ○ It describes the elements that make up the design, their relationships, responsibilities and collaborations ★ The consequences. ○ the results an tradeoffs of applying the pattern
  • 6.
    Why are theyimportant?
  • 7.
    Benefits of designpatterns ★ They provide proven solutions to software development issues. ★ They make communications between developers more efficient. ★ They make it easier to change and maintain software.
  • 8.
    Benefits of designpatterns ★ They prevent from wasting your time hacking your way into a solution. ★ They shift your level of thinking to higher perspective. ★ They enable design efficient and scalable applications.
  • 9.
    OO basics anddesign principles
  • 10.
    objected oriented basics ★Abstraction ★ Encapsulation ★ Polymorphism ★ Inheritance
  • 11.
    object oriented designprinciples ★ Separate what varies from what stays the same . ★ Favor composition over inheritance. ★ Always program to interfaces not implementations.
  • 12.
    principles cont'd ★ Strivefor loosely coupled design between objects. ★ Classes should be open to extension but closed for modification.(open-close principle)
  • 13.
  • 14.
    Classifications ★ Creational DesignPatterns ★ Behavioural Design Patterns ★ Structural Design Patterns
  • 15.
    Creational Patterns “These aredesign patterns that deal with object creation mechanisms.”
  • 16.
    Types of creationalpatterns ★ Factory method pattern ★ Abstract factory pattern ★ Builder pattern ★ Prototype pattern ★ Singleton pattern
  • 17.
  • 18.
  • 19.
  • 20.
    Behavioral Patterns “are patternsthat identify common communication patterns between objects and realize them to increase flexibility in these communication.”
  • 21.
    Types of behavioralpatterns ★ Strategy ★ Observer ★ State ★ Command ★ Iterator ★ Mediator ★ Memento ★ Template method ★ Visitor
  • 22.
  • 23.
  • 24.
    Structural Patterns “these arepatterns that identify simple ways to realize relationships between entities.”
  • 25.
    Types of structuralpatterns ★ Adapter ★ Bridge ★ Decorator ★ Composite ★ Facade ★ Flyweight ★ Proxy
  • 26.
    Proxy Pattern “allows youto provide an interface to other objects by creating a wrapper class as the proxy ”
  • 27.