Intro to Design PatternsFunu 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