Course Introduction
Course Objectives
Suggested References
Design Pattern Overview
Objectives in Software Design/Module Design
Overview of Patterns
Qualities of a Pattern
Pattern Systems
Heuristics vs. Patterns
Principles of Object Oriented Design
Overview of Principles
Single-Responsibility Principle (SRP)
Open-Closed Principle (OCP)
Tell vs. Ask
Command/Query Separation (CQS)
Composed Method
Combined Method
Liskov Substitution Principle (LSP)
Dependency Inversion Principle (DIP)
Interface Segregation Principle (ISP)
Law of Demeter
Basic Object Oriented Design Patterns
Delegation vs. Inheritance
Interface
Immutable
General Responsibility Assignment Software Patterns
Catalog of GoF Patterns
Overview of GoF Patterns
Introduction to Creational Patterns
Factory Method
Abstract Factory
Singleton
Introduction to Structural Patterns
Adapter
Facade
Composite
Bridge
Introduction to Behavioral Patterns
Strategy
Template Method
Observer
Additional Gof Patterns (as time permits)
Decorator
Proxy
Iterator
Command
State
Patterns-Oriented Software Architecture
Systems of Patterns
Architectural Patterns
Layers Architecture
Broker
Model-View-Controller
Presentation-Abstraction-Control
Reflection
Catalog of J2EE Patterns
J2EE Pattern Relationships
Patterns Summary
Appendix A: UML Review
Appendix B: C# Code Examples for GoF
Appendix C: Maze Game Java Code
Appendix D: Possible Solutions for Exercises
Appendix E: Diagram Worksheets