|






| |
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
Meyers Open-Closed Principle
Martins Design Principles
Single Responsibility Principle
Interface Segregation Principle
Dependency Inversion Principle
Liskov Substitution Principle
Tell vs. Ask
Command/Query Separation
Martins
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.
|