Overview
Objectives in Software Design/Module Design
Overview of Patterns
Qualities of a Pattern
Patterns 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
Review of the Life Cycle Process
Principles of Package Architecture
Package Cohesion Principles
Package Coupling Principles
Martin Package Metrics
Basic Patterns
Delegation vs. Inheritance
Interface
Immutable
Null Object
Marker Interface
General Responsibility Assignment Software Patterns
Catalog of GoF Patterns
Overview of GoF Patterns
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Decorator
Proxy
Façade
Composite
Flyweight
Bridge
Chain of Responsibility
Strategy
Iterator
Template Method
Mediator
Observer
Memento
Snapshot
Command
State
Visitor
Interpreter
Summary of GoF Case Study
Other Micro-Architecture Patterns
Object Pool
Dynamic Linkage
Cache Management
Type Object
Extension Object
Smart Pointer (C++)
Concurrency Patterns
Single Threaded Execution
Guarded Suspension
Balking
Scheduler
Read/Write Lock
Producer/Consumer
Two-Phase Termination
Double-Checked Locking
Patterns-Oriented Software Architecture
Architectural Patterns
Layers Architecture
Pipes & Filters Architecture
Blackboard Architecture
Broker
Model-View-Controller
Presentation-Abstraction-Control
Reflection
Microkernel
Summary: How to Select an Architecture
Catalog of J2EE Patterns
J2EE Pattern Relationships
Intercepting Filter
Front Controller
View Helper
Composite View
Service to Worker
Dispatcher View
Business Delegate
Value Object
Session Façade
Composite Entity
Value Object Assembler
Value List Handler
Service Locator
Data Access Object
Service Activator
Selected Process Patterns (from PloP)
The Selfish Class
Patterns for Evolving Frameworks
Patterns for Designing in Teams
Patterns for System Testing
Selected Anti-Patterns
Stovepipe System
Stovepipe Enterprise
Reinvent the Wheel
Golden Hammer
Death by Planning
Death March Projects
Additional Management Anti-Patterns
Patterns Summary
Appendix A: UML Review
Appendix B: C# Code Examples for GoF
Appendix C: Selected Code Examples for J2EE
Appendix D: Possible Solutions for Selected Exercises