Software and Design Patterns

This part of the documentation will explain general solution strategies for common engineering problems. We explain mainly patterns that are also used in the examples.

"Design Patterns are general, repeatable solutions to common recurring problems in software development." [From Wikipedia, the free encyclopedia, "Design pattern (computer science)"].

A "pattern" has been defined as "an idea that has been useful in one practical context and will probably be useful in others." [M.Fowler, "Analysis Patterns - Reusable Object Models", Addison Wesley, ISBN 0-201-89542-0].

Some simple patterns can be directly transformed into code. However, do not expect all patterns to be complete solutions! They are helpful descriptions or templates on how to solve a particular problem, you as the programmer must know how and when to use them. In order to do this you must first understand the fundamental concepts of Object Oriented programming: Class, Object, Method, Message passing, Inheritance, Encapsulation, Abstraction and Polymorphism. If any of these concepts are unfamiliar to you please read up on them before continuing with this chapter, you will find references on OO programming at the end of this page.

Well-designed object-oriented systems have multiple patterns embedded in them. These patterns are divided into five categories - Fundamental, Architectural, Creational, Structural, and Behavioral - all of them reinforce as well as complement each other. Usually, patterns inside one category complement eachother because they have the same underlying principles for structuring code.

In this section a set of important patterns are outlined and explained. Additionally, in the download section a small example outlining a series of patterns can be downloaded. This set of examples is used in our "Best Practice" book.


  1. Fundamental Design Patterns are general concepts, they are needed in most other patterns to accomplish their task.
    1. Interface
    2. Container
    3. Delegation
  2. Architectural Patterns express a fundamental structural organization or schema for software systems. They provide a set of predefined subsystems, specify their responsibilities, and include rules and guidelines for organizing the relationships between them.
    1. Model View Controller (MVC)
    2. Dependency Injection
  3. Structural Design Patterns are concerned with how classes and objects are composed together to form larger structures. [GoF, "Design Patterns", Addison Wesley, ISBN 0201633612]
    1. Facade
    2. Decorator
    3. Proxy
    4. Data Access Object
    5. Transfer Object
  4. Creational Design Patterns abstract the instantiation process. They help make a system independent of how its objects are created, composed, and represented. [GoF, "Design Patterns", Addison Wesley, ISBN 0201633612]
    1. Factory Method
    2. Abstract Factory
    3. Objectpool
    4. Singleton
  5. Behavioral Design Patterns are concerned with algorithms and the assignment of responsibilities between objects. [GoF, "Design Patterns", Addison Wesley, ISBN 0201633612]
    1. Iterator
    2. Observer
    3. Event Listener
    4. Strategy