Course Description

This 2-day Java Design Patterns training course explores proven real-world techniques to meet the biggest challenge in the software development community – building quality systems which fulfil business and technical requirements, and delivering them on time. The focus of the course is to give students the practical skills that are most critical in building well designed software systems. It is hands-on and applied, as well as giving students the formal knowledge they need to be fully conversant in this important area.

The course explores the most common object-oriented design patterns (Gang of Four) and how to use these patterns to develop solid, robust, and reusable software development applications. The course covers the patterns in the three core areas of Creational, Structural,and Behavioural and is hands-on with design projects and programming labs using Java as the demonstration language.  The skills and knowledge gained from this course naturally apply to all object-oriented programming platforms.

After completing this course, participants will be able to:

  • Describe the philosophy behind design patterns.
  • Describe the GOF catalogue.
  • Use various basic design patterns in Java code.
  • Describe and use a small number of enterprise patterns.

 

Pre-requisites

Some experience in object-oriented thinking / programming and a basic knowledge of the Java language are pre-requisite for this course.

 

Who is this course for?

For Software Developers, System Architects, Software Testers, and IT Project Managers who need to improve systems development through the use of design patterns.

 

Course Content

Introduction

What is a Design Pattern?
Why Use Patterns?
Adapter Pattern
Interfaces and Abstract Classes
Interface Types and Definitions
Abstract Methods & Classes
Using Abstract Classes
Important Principles of OO Design

Iterator Pattern

Patterns: Traversing a Collection
A Simple ArrayList
Using a Simple Collection
An Alternative Traversal Design
Why is this a Design Pattern?

Design Patterns - Background

Design Patterns Arise from Architecture
Christopher Alexander
Patterns in a Pattern Language
Sitting Circle(185)
Different Chairs(251)
Patterns Evolution in Software
OOPSLA 88
Patterns Today

UML Overview

Unified Modelling Language (UML)
Using UML
UML Diagrams
Class Diagram
Class Diagram Notation
Association Relationships
Abstract Class Notation
Interface Notation

Gang of Four Design Patterns (GOF)

GOF Pattern Description
Iterator: Overview
Iterator: Motivation
Iterator: Applicability
Iterator: Structure – Java
Iterator: Structure – General
Iterator: Participants
Iterator: Collaborations & Consequences
Iterator: Implementation
Implementation: Who Controls the Iteration
Implementation: Who Defines the Traversal
Implementation: Robustness
Iterator: Known Uses and Related Patterns

The GOF Patterns Catalog

Organising the Catalog
Creational, Structural and Behavioural Purpose
Class and Object Scope
Design Pattern Space
The GOF Catalog of Design Patterns

Factory Method Pattern

Motivation – Forces and Solution
Factory Method Iterator Usage
Factory Method – General Structure
Participants and Collaborations
Applicability
Consequences
Implementation
Known Uses and Related Patterns

Strategy Pattern

Motivation – Forces & Solution
Structure
Alternative to Strategy
Participants and Collaborations
Applicability
Consequences
Implementation
Known Uses & Related Patterns
Difference from Factory Method

Decorator Pattern

Motivation – Forces and Solution
Structure
Participants & Collaborations
Writer & FileWriter Classes
UpperCaseFilterWriter Class
Consequences
Implementation
Known Uses & Related Patterns

Composite Pattern

Motivation – Forces & Solution
Structure
Participants and Collaborations
Consequences
Implementation
Known Uses and Related Patterns

Template Method Pattern

Motivation – Forces and Solution
Structure
Participants & Collaborations
Consequences
Implementation
Known Uses and Related Patterns

Command Pattern

Motivation – Forces & Solution
Structure
Participants and Collaborations
Consequences
Implementation
Undo and Redo
Known Uses

Chain of Responsibility Pattern

Motivation – Forces and Solution
Structure
Participants & Collaborations
Consequences
Applicability
Implementation
Known Uses and Related Patterns

Facade Pattern

Motivation – Forces and Solution
Structure
Participants and Collaborations
Applicability
Consequences
Implementation
Known Uses

Patterns for Enterprise Systems

Technologies and Best Practices
Some Patterns for Enterprise Systems
Business Delegate
Business Delegate: Solution
Business Delegate: Structure
Business Delegate: Consequences
Value Object
Value Object: Solution
Value Object: Structure
Value Object: Consequences
Data Access Object (DAO)
DAO: Solution
DAO: Structure
DAO: Consequences
Lazy Load
Lazy Load: Solution
Lazy Load: Consequences

Wrap up

What Have We Done?
Where Do We Go From Here?
Design Patterns Isn’t All You Need