Gang of Four (GoF) Design Patterns
This course is currently not scheduled on the open calendar, but can be organized on request.
Request CourseDuration
3 day(s)
Audience
Architects, Designers and Developers
Prerequisites
Knowledge of Object Orientation principles, understanding UML diagrams.
Objectives
This course will give participants a complete understanding of the most common design patterns and their use in technical designs and programs.
Methods
Classroom training with hands-on exercises.
Description
During the design phase the problem domain model undergoes a remodeling into programming constructs. Using Object Oriented Design principles, this process is simplified by maintaining a one-to-one mapping between problem domain objects and software objects. The starting goal is to keep the design as close as possible to those domain objects. Afterwards, new objects will have to be introduced to address specific functional requirements and to implement use case scenarios on those domain objects. But creating reusable software designs is difficult. It is often hard to provide classes with the right granularity, to determine the correct inheritance structure and interfaces, and to define the relationships between classes that are loosely coupled. Design patterns are there to help. They are responsible for creating flexible designs, by providing solutions to common recurring design problems, and by offering loosely coupled structures without reinventing the wheel. They offer a groups of communicating objects and classes that will solve general design problems for particular contexts.
This course will give the participant a complete overview of design patterns described in the book "Design Patterns: Elements of Reusable Object-Oriented Software", by Gamma, Helm, Johnson and Vlissides, which is considered the reference on this subject. The course will present each of the patterns using examples and UML diagrams. All patterns will be discussed with their advantages and disadvantages. Also included is an introduction to common design pitfalls, called anti-patterns, and to their solutions, called refactorings. The participant will be able to practice his acquired knowledge during instructor-led exercises, in which the patterns will be discussed in practical situations and then implemented in solution designs and/or programs. At the end of the course, participants will be able to apply what they learned to create better, reusable solutions.
Contents
Introduction
- Discovering and Inventing Objects
- Object Oriented Design
- Tools
- What is a Pattern?
- What is a Design Pattern?
- Design Coverage
- Reference
- Elements of a Pattern
- Why Use Design Patterns?
Gang of Four Design Patterns
- Catalogue of Design Patterns
- Design Patterns Overview
- How to Select and Use a Design Pattern?
Creational Patterns
- Overview
Factory Method
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #01
Gang of Four Design Patterns
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #02
Builder
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #03
Prototype
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
Singleton
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #04
Structural Patterns
- Overview
Adapter
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #05
Bridge
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #06
Composite
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #07
Decorator
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #08
Façade
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
Flyweight
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #09
Proxy
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #10
Behavioural Patterns
- Overview
Template Method
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
Interpreter
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #11
Chain of Responsibility
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
Observer
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #12
Command
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
State
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #13
Iterator
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
Strategy
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #14
Mediator
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
Visitor
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
- Exercise #15
Memento
- Intent
- Motivation
- Structure
- Applicability
- Participants
- Collaboration
- Consequences
Conclusion
- Use Patterns in Object Oriented Design