1. Introduction
What’s our World?
OK – So Just What is a Design Pattern?
Design Patterns are not Esoteric
Why Use Patterns?
The Adapter Pattern
Reviewing Interfaces & Abstract Classes
Interface Types
Interface Definitions
Abstract Methods
Abstract Classes
Using Abstract Classes
Important Principal of OO Design
2. The Iterator Pattern
Patterns: Traversing a Collection
A Simple ArrayList
Using Our ArrayList
Using Our Simple Collection
Another Design for Collection Traversal
Using Our New Collection
Differences in Traversing Our Collection
Why is This Important?
Why is This a Design Pattern?
We Will Expand on Our Design
3. Design Patterns – Background
Design Patterns Arise From Architecture
Christopher Alexander
The TimelessWay
A Core Principle of His Books
Patterns in A Pattern Language
Sitting Circle (185)
Different Chairs (251)
Patterns Evolution in Software
OOPSLA 88
Patterns Evolution in Software
Patterns Today
4. UML Overview
Unified Modeling Language (UML)
Using UML
UML Diagrams
Class Diagram
Class Diagram Notation
Association Relationships in Detail
Class Diagram Notation
Abstract Class Notation
Interface Notation
Another Class Diagram
5. Gang of Four Design Patterns Description
What Do We Know Now About Patterns
GOF Pattern Description
Iterator: Overview
Iterator: Motivation
Iterator: Applicability
Iterator: Structure – Java
Iterator: Structure – General
Iterator: Participants
Iterator: Collaborations and
Consequences
Iterator: Implementation
Implementation: Who Controls the
Iteration
Implementation: Who Defines the
Traversal
Implementation: Robustness
Iterator: Known Uses and Related
Patterns
So – What is a Design Pattern?
6. The GOF Patterns Catalog
Organizing the Catalog
Creational, Structural, and Behavioral
Purpose
Class and Object Scope
Design Pattern Space
The GOF Catalog of Design Patterns
7. Factory Method Pattern
Motivation – Forces and Solution
Motivation
Factor Method: Iterator Usage
Factory Method: General Structure
Participants
Collaborations and Applicability
Applicability
Consequences
Implementation
Known Uses and Related Patterns
8. Strategy Pattern
Motivation – Forces and Solution
Structure
Alternative to Strategy
How Do We Choose Among Alternative?
Participants
Collaborations and Applicability
Consequences
Implementation
Known Uses and Related Patterns
Difference From Factory Method
9. Decorator Pattern
Motivation – Forces and Solution
Structure
Participants and Collaborations
Structure
Writer and FilterWriter Classes
UpperCaseFilterWriter Class
Consequences
Implementation
Known Uses and Related Patterns
10. Composite Pattern
Motivation – Forces
Motivation – Solution
Structure
Participants
Collaborations
Consequences
Implementation
Known Uses and Related Patterns
11. Template Method Pattern
Motivation – Forces and Solution
Structure
Participants and Collaborations
Consequences
Implementation
Known Uses and Related Patterns
12. Command Pattern
Motivation – Forces and Solution
Structure
Participants and Collaborations
Consequences
Implementation
Undo and Redo
Known Uses
13. Chain of Responsibility Pattern
Motivation – Forces
Motivation – Solution
Structure
Participants and Collaborations
Consequences/Applicability
Implementation
Known Uses and Related Patterns
14. Façade Pattern
Motivation – Forces and Solution
Structure
Participants and Collaborations
Consequences/Applicability
Implementation
Known Uses
15. Patterns for Enterprise Systems
Meeting the Challenge – Technologies
Meeting the Challenge – 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
16. Wrap-Up
What Have We Done?
So – What Do You Think About Patterns?
Where Do We Go From Here?
Do We Fit Into Alexander’s Vision?
Design Patterns Isn’t All You Need
Have Fun