Comprehensive Design Patterns
Private Training

Course Summary

Object-Oriented Analysis and Design (OOAD) is a process of identifying the needs of a software project and then laying out those specifications in a readable model. Design Patterns are an extension of these skills that create more maintainable and robust code. Using well-known, proven patterns that either stand-alone or build from one to the next, designers are able to further define the specifications of the project, optimizing quality and time spent on developing the project by programmers.

This advanced Object-Oriented course provides software architects and designers with skills to create high quality object-oriented designs exhibiting improved flexibility, reduced maintenance costs, and with increased understanding of the resulting code. Participants learn more than 30 object-oriented patterns, including the 23 micro-architectures in “Design Patterns: Elements of Reusable Object-Oriented Software”, by Gamma, Helm, Johnson, and Vlissides (the gang-of-four, or GoF book). Application examples and code snippets are provided to illustrate the patterns and the rationale for using that pattern in a given situation.

Audience
Software architects and designers requiring advanced design skills.
Course Length
4 Days
Prerequisites
Object-Oriented Analysis & Design with the Unified Modeling Language or equivalent experience. At least 6 months experience programming with an object-oriented programming language.

Objectives

Improve Software Architecture

Build Design Pattern Vocabulary

Be able to discuss trade-offs in applying various design patterns

Gain concepts and tools for writing better object-oriented code

Gain concepts for better documenting object-oriented code

Review relevant UML notation

Detailed Outline

  1. Course Introduction
    • Course Objectives
    • Overview
    • Suggested References
  2. Design Pattern Overview
    • Objectives in Software Design/Module Design
    • Overview of Patterns
    • Qualities of a Pattern
    • Pattern Systems
    • Heuristics vs. Patterns
  3. 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
  4. Principles of Package Architecture
    • Package Cohesion Principles
    • Package Coupling Principles
    • Martin Package Metrics
  5. Basic Object-Oriented Design Patterns
    • Delegation vs. Inheritance
    • Interface
    • Immutable
    • Null Object
    • Marker Interface
    • General Responsibility Assignment Software Patterns
  6. Catalog of GoF Patterns
    • Overview of GoF Patterns
    • Introduction to Creation Patterns
    • Factory Method
    • Abstract Factory
    • Builder
    • Prototype
    • Singleton
    • Introduction to Structural Patterns
    • Adapter
    • Decorator
    • Proxy
    • Façade
    • Composite
    • Flyweight
    • Bridge
    • Introduction to Behavioral Patterns
    • Chain of Responsibility
    • Iterator
    • Strategy
    • Template Method
    • Mediator
    • Observer
    • Memento
    • Command
    • State
    • Visitor
    • Interpreter
  7. Other Micro-Architecture and System Patterns
    • Object Pool
    • Worker Thread
    • Dynamic Linkage
    • Cache Management
    • Type Object
    • Extension Object
    • Smart Pointer (C++)
    • Session
    • Transaction
  8. Concurrency Patterns
    • Single Threaded Execution
    • Guarded Suspension
    • Balking
    • Scheduler
    • Read/Write Lock
    • Producer/Consumer
    • Two-Phase Termination
    • Double-Checked Locking
  9. Patterns-Oriented Software Architecture
    • Systems of Patterns
    • Architectural Patterns
    • Layers Architecture
    • Pipes & Filters Architecture
    • Blackboard Architecture
    • Broker
    • Model-View-Controller
    • Presentation-Abstraction-Control
    • Reflection
    • Microkernel
    • Catalog of J2EE Patterns
    • J2EE Pattern Relationships
  10. Selected Process Patterns (from PLoP)
    • The Selfish Class
    • Patterns for Evolving Frameworks
    • Patterns for Designing in Teams
    • Patterns for System Testing
  11. Selected Anti-Patterns
    • Stovepipe System
    • Stovepipe Enterprise
    • Reinvent the Wheel
    • Golden Hammer
    • Death by Planning
    • Death March Projects
    • Additional Management Anti-Patterns
  12. Patterns Summary