Home
Up
Services
Articles
About Us
Contact Us

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. With a knowledge of design patterns, a designer or architect can leverage the collective knowledge and expertise of the software community.

 

This 4-day course offers students a solid foundation applying basic design principles such as Single Responsibility, Dependency Inversion, Open-Closed, Liskov Substitution, Interface Segregation, and other “best of breed” design principles. Basic patterns including Delegation vs. Inheritance, and Interface provide necessary understanding as the course covers all 23 patterns in the classic Design Patterns book by the “Gang of Four” (GoF). The last day is devoted to advanced patterns for software design in diverse areas including application development, concurrency and software architecture. A special “anti-patterns” sections describes patterns that we should not emulate.

 

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

  • Explain the role and value of patterns

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

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

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

Duration

Four 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 23 Gang of Four Patterns

5 Creational Patterns

–   Factory Method

–   Abstract Factory

–   Builder

–   Prototype

–   Singleton

7 Structural Patterns

–   Adapter

–   Decorator

–   Proxy

–   Faηade

–   Composite

–   Flyweight

–   Bridge

11 Behavioral Patterns

–   Chain of Responsibility

–   Iterator

–   Strategy

–   Template Method

–   Mediator

–   Observer

–   Memento

–   Command

–   State

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