Choose your language:

France
Germany
Hong Kong
India
Ireland
Japan
Malaysia
Netherlands
New Zealand
Singapore
Sweden
United Kingdom
United States

Design Patterns

Course Code

IN351

Duration

4 Days

Object-Oriented Analysis and Design with UML or equivalent experience. At least 6 months experience programming in an object-oriented programming language.
This 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. * Supplemental book included in class.
This course is designed for Software architects and designers requiring advanced design skills.

Upon completion of this course, participants will be able to:

  • 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
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

Principles of Package Architecture
Package Cohesion Principles
Package Coupling Principles
Martin Package Metrics

Basic Object-Oriented Design 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

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

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

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

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 – Maze Game Java Code

Appendix D – Possible Solutions for Exercises

Appendix E – Diagram Worksheets
Send Us a Message
Choose one