Power BI

Content by Charles Sterling

One Free Seat to the Net Objectives Design Patterns Explained Class August 4th (Bellevue)

The seat is Gone!!! 

May from Myspace was the first person to reply!

Also Amir wanted me mentioned while there is no cost to attendees the seat is still being paid for by Net Objectives and Microsoft.  We are just passing this on to a lucky individual rather than letting it go to waste!





Amir the Net Objectives instructor who rocked the house at our last Tester Sig just called and said he had a recent cancelation for his three day DPE class and was willing to give that seat away….They normally charge $1,495 for the two day version of this class – so quite a catch!

First one to reply to me gets the seat!

Please email me directly at: chass@microsoft.com  


Design Patterns Explained


This course goes beyond merely teaching several design patterns. It also teaches the principles and strategies that make design patterns good. This enables students to use advanced design techniques in solving their problems whether design patterns are present or not. After teaching several patterns and the principles underneath them, the course goes further by showing how patterns can work together to create robust, flexible, maintainable designs. It is taught by the primary author of the book: Design Patterns Explained: A New Perspective on Object-Oriented Design or by someone certified by him to teach it.

Detailed Description

Design patterns are about using existing quality solutions to solve recurring problems. They are valuable to learn, because knowing them:

  • provides quality solutions that might not otherwise be thought of
  • gives a common set of terminology to be used amongst team members
  • improves the team-wide quality of design and code

In addition, in our Pattern-Oriented Design classes, we show how:

  • design patterns lead to a better understanding of object-oriented design principles
  • design patterns work together to give designers a better perspective on their own design problems
  • design patterns illustrate a better design approach than merely identifying objects and piecing them together.

We find that (if not addressed in class) these compelling benefits are often not realized until a student has learned a lot of different design patterns. Even then, until they also have a lot of experience using design patterns, they might not look for this type of gain. But by focusing on the principles and strategies underlying design patterns, each attendee at our courses begins improving their abilities as a designer immediately.

Ironically, this approach – that of teaching the principles and strategies of design patterns – also makes them much easier to learn.

Let’s look a little deeper at what we mean.

Better understanding of object-oriented design principles

Too many of us have learned that encapsulation is “data hiding”, or that we find our objects by looking at the nouns in our problem domain and make the verbs our methods. These “strategies” may be good starting points (we actually don’t even agree with that) but they definitely result in an overuse of inheritance and systems that are hard to maintain. The reason design patterns are better designs that your normal, run-of-the-mill designs, is that their developers used a different set of guidelines for object selection. Learning these guidelines will improve your designs whether you actually use design patterns or not.

Learning how design patterns can work together

Design patterns as they are often taught, involve one main concept or challenge. In the real world, things typically are much more complicated. In order to use design patterns effectively, it is important to see how patterns can work together to solve real world problems. This is not a problem with design patterns themselves, but rather how they are usually taught. Any course that just discusses design patterns on a one-by-one basis will have minimal impact on your using them in the real world.

A new design approach

We typically think of design as a process of identifying our objects and then “putting them together”. Although common, a better approach is available. This better approach involves viewing things at a higher, more conceptual level, without leading to paralysis by analysis. While many experienced architects already do this, it is a very difficult method to teach. Net Objectives has found that this design approach is much easier to understand once design patterns have been explained.

Course Level


Course Outline
  • Writing Maintainable Code
  • Coding First Principles: Loose Coupling, Strong Cohesion, No Redundancy
  • Advice from the Gang of Four (the authors of Design Patterns: Elements of Re-usable Object-Oriented Design)
  • Basic Object-Oriented Principles: Polymorphism, Encapsulation, Composition
  • Discovering the Strategy and Bridge Patterns
  • What Are Design Patterns?
    • Design Patterns As Coding Best Practices
    • Design Patterns As Ways to Contain Variation
    • Design Patterns As Forces
  • A Comparison of Design Approaches
    • “Standard” Entity and Behavior Analysis
    • Variation Based Design
    • Pattern Based Design
  • Commonality/Variability Analysis: How to Design For Variation
  • The Strategy Pattern
  • Using Design Patterns to Contain Variation: The Analysis Matrix and the Abstract Factory
  • The Bridge Pattern
  • The Adapter Pattern
  • The Facade
  • The Singleton Pattern
  • The New Perspective of Object-Oriented Design
  • The Family of Proxy Patterns
  • The Decorator Pattern
  • The Composite Pattern
  • The Iterator and Factory Method Patterns
  • A Case Study Using Design Patterns (on-site course only)
Who is this course for

This course is meant for experienced object-oriented developers who have intermediate to advanced object-oriented experience.


Experience with object-oriented design. In particular, the participant must be familiar with inheritance, polymorphism, encapsulation, abstract classes and composition. Familiarity with object-oriented theory, or C++, C#, Java, or VB.NET is useful.