Home
Up
Services
Articles
About Us
Contact Us

 

Design Patterns

Goals

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 comprehensive coverage of the 23 patterns in the classic Design Patterns book by the “Gang of Four” (GoF). Additional topic areas include patterns for: Concurrency, Micro-Architecture, Pattern-Oriented Software Architecture (POSA), and Anti-Patterns.

 

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

Please call 803-781-7628 for public enrollment and private, on-site pricing.

Description

This 4-day course is designed to provide students with a thorough introduction to, and understanding of, design patterns. The course establishes a solid foundation from 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 Design Patterns book. 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.

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 ©2008 Evanetics, Inc. All Rights Reserved.  www.evanetics.com