Home
Up
Services
Articles
About Us
Contact Us

Advanced Design Patterns

Description

Patterns reveal solutions to a problem that recurs in multiple contexts. Design patterns are proven solutions to software design problems that are independent of platform or language. This course is for students who have an understanding of basic design patterns (see our Core Design Patterns course), and who want to extend their knowledge with a thorough understanding of advanced design patterns. This course focuses on the more subtle patterns in the classic Design Patterns book by the “Gang of Four” (GoF).  Additional topic areas include advanced patterns for: Concurrency, Micro-Architecture, and Pattern-Oriented Software Architecture (POSA). A special “anti-patterns” section describes patterns that we should not emulate.

 

At the end of the course, the student will be able to:

  • Articulate the advanced Gang of Four patterns, and how they relate to other patterns.

  • Explain critically important design principles from Martin, Meyer and others.

  •  Discuss trade-offs in applying various design patterns, and when to use each pattern.

Duration

Two days.

Prerequisites

Experience in software design or architecture is desirable, but not mandatory. At least 6 months of programming experience in Java, C# or C++ is highly desirable.

Cost

$3,200 per course-day includes up to 12 students for on-site training. $300 per course-day for each additional student up to a maximum of 16 students.

Topics 

Design Pattern Overview

–   Qualities of Patterns

–   Pattern Systems

–   Heuristics vs. Patterns

Critical Principles of Object-Oriented Design

–   Meyer’s Open-Closed Principle

–   Martin’s Design Principles

–   Single Responsibility Principle

–   Interface Segregation Principle

–   Dependency Inversion Principle

–   Liskov Substitution Principle

–   Tell vs. Ask

–   Command/Query Separation

Martin’s Principles of Package Architecture

–   Package Cohesion

–   Package Coupling

Basic Object-Oriented Design Patterns

–   Delegation vs. Inheritance

–   Design to Interface

–   Marker Interface

–   Null Object

–   Immutable

The Gang of Four Design Patterns

Advanced Creational Patterns

–   Builder

–   Prototype

Advanced Structural Patterns

–   Decorator

–   Proxy

–   Flyweight

Advanced Behavioral Patterns

–   Mediator

–   Memento

–   Command

–   Visitor

–   Interpreter

Micro-Architecture and System Patterns

–   Object Pool

–   Worker Thread

–   Dynamic Linkage

–   Cache Management

–   Type Object

–   Extension Object, etc.

 

Concurrency Patterns

–   Single Threaded Execution

–   Guarded Suspension

–   Balking

–   Scheduler

–   Read/Write Lock

–   Producer/Consumer

–   Two-Phase Termination

–   Double-Checked Locking

Pattern-Oriented Software Architecture

–   Systems of Patterns

–   Architectural Patterns

–   Layers Architecture

–   Pipes & Filters Architecture

–   Blackboard Architecture

–   Broker

–   Model-View-Controller

–   Reflection

–   Microkernel

–   Catalog of J2EE Patterns

–   J2EE Pattern Relationships

Process Patterns

–   The Selfish Class

–   Patterns for Evolving Frameworks

–   Patterns for Designing in Teams

–   Patterns for System Testing

Anti-Patterns (Learning from bad examples)

–   Stovepipe System

–   Reinvent the Wheel

–   Golden Hammer

–   Death by Planning, etc.

Course Wrapup

 

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

 

Audience

Software developers, designers and architects who wish to learn advanced design pattern techniques.

 

For more information about this course or other courses please contact Evanetics at 1-803-781-7628.

 

Copyright ©2009 Evanetics, Inc. All Rights Reserved.  www.evanetics.com