Design Patterns

Overview

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.

Prerequisites

Object-Oriented Analysis & Design-UML or equivalent experience. At least 6 months experience programming with an object-oriented programming language.

Course duration

4 Days

Course outline

  1. Design Pattern Overview
    • Objectives in Software Design/Module Design
    • Overview of Patterns
    • Qualities of a Pattern
    • Pattern Systems
    • Heuristics vs. Patterns

  2. 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

  3. Principles of Package Architecture
    • Package Cohesion Principles
    • Package Coupling Principles
    • Martin Package Metrics

  4. Basic Object-Oriented Design Patterns
    • Delegation vs. Inheritance
    • Interface
    • Immutable
    • Null Object
    • Marker Interface 1
    • General Responsibility Assignment Software Patterns

  5. Catalog of GoF Patterns
    • Overview of GoF Patterns
    • Introduction to Creation Patterns
    • Factory Method
    • Abstract Factory
    • Builder
    • Prototype
    • Singleton
    • Introduction to Structural Pattern
    • Adapter
    • Decorator
    • Proxy
    • Facade
    • Composite
    • Flyweight
    • Bridge
    • Introduction to Behavioral Patterns
    • Chain of Responsibility
    • Strategy
    • Iterator
    • Template Method
    • Mediator
    • Observer
    • Memento
    • Command
    • State
    • Visitor
    • Interpreter

  6. Other Micro-Architecture and System Patterns
    • Object Pool
    • Worker Thread
    • Dynamic Linkage
    • Cache Management
    • Type Object
    • Extension Object
    • Smart Pointer (C++)
    • Session
    • Transaction

  7. Concurrency Patterns
    • Single Threaded Execution
    • Guarded Suspension
    • Balking
    • Scheduler
    • Read/Write Lock
    • Producer/Consumer
    • Two-Phase Termination
    • Double-Checked Locking

  8. 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

  9. Selected Process Patterns (from PLoP)
    • The Selfish Class
    • Patterns for Evolving Frameworks
    • Patterns for Designing in Teams
    • Patterns for System Testing

  10. Selected Anti-Patterns
    • Stovepipe System
    • Stovepipe Enterprise
    • Reinvent the Wheel
    • Golden Hammer
    • Death by Planning
    • Death March Projects
    • Additional Management Anti-Patterns

  11. Patterns Summary
  12. Appendix A: UML Review
  13. Appendix B: C# Code Examples for GoF
  14. Appendix C: Maze Game Java Code
  15. Appendix D: Possible Solutions for Exercises
  16. Appendix E: Diagram Worksheets

Wintrac Inc.
16523 SW McGwire Ct.
Beaverton OR 97007
Wintrac, Inc. All rights reserved.                                                                               Site Map   |   Terms of Use   |   Privacy Policy