Design Patterns (by Joel Funu at DevCongress 2013)

Post on 15-Jan-2015

1.506 views 0 download

Tags:

description

A tech talk on Design Patterns delivered by Joel Funu at DevCongress 2013 on 24th August, 2013.

Transcript of Design Patterns (by Joel Funu at DevCongress 2013)

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