Pattern-Based Software Development in C# - A Hands-on Introduction to Patterns with Models and Code

Contact Us for Dates
4 days practical workshop for up to 12 people.
Only £1580
The essence and basic structure of a software design solution may be repeated many times, even though the realisation is different in each case. Patterns offer a technique for capturing such recurrence, allowing design experience to be understood, distilled and shared.The Pattern-Based Software Development in C# course introduces patterns from the ground up, presenting principles as well as concrete examples. It develops understanding through lectures, discussion and hands-on labs, which reinforce the concepts by putting them into practice.


The training course combines lectures with practical exercises that help the delegates to put what they have learned on the training course into practice. The exercises specifically build on what has been recently taught and are built up as the training course progresses.

Training Course Objectives

  • Understand what does and does not go to make up a pattern
  • Understand the beneficial role of patterns in all aspects of development
  • Learn and use common patterns for object-oriented and large-scale design
  • Appreciate patterns from the strategic level down to idiomatic examples in C#

Who it is for

The course is suitable for software developers familiar with object-oriented principles and practices.

Training Course Prerequisites

  • Programming experience in C# is assumed, and familiarity with UML is beneficial.


Chapter 1 Software Architecture

  • Defining architecture
  • Dependencies
  • Stability and change
  • Patterns

Chapter 2 Core Pattern Concepts

  • Patterns in software architecture
  • Pattern anatomy
  • Role of patterns
  • Essential pattern form elements
  • Common pattern resources

Chapter 3 Introductory Pattern Examples

  • General design patterns in OO
  • The Composite pattern
  • The Proxy pattern
  • Patterns beyond objects

Chapter 4 Combining Patterns

  • Pattern catalogues
  • Pattern communities
  • individual to multiple patterns
  • The Visitor pattern
  • Pattern stories and languages

Chapter 5 Pattern Context Dependency

  • Context sensitivity
  • The Client Proxy pattern
  • Strategic and tactical patterns
  • Idioms
  • The Immutable Value pattern
  • The Copied Value pattern
  • The Combined Method pattern
  • The Data Transfer Object (DTO) pattern

Chapter 6 Patterns for Decoupling

  • The Layers pattern and variations
  • The Fragile Base Class problem
  • The Explicit Interface pattern
  • The Separated Interface pattern
  • The Bridge pattern

Chapter 7 Patterns for Adaptation

  • The Object Adapter pattern
  • The Class Adapter pattern
  • The Decorator pattern
  • The Template Method pattern
  • The Facade pattern

Chapter 8 Patterns for Object Management

  • The Factory Method pattern
  • The Disposal Method pattern
  • The Manager pattern
  • The Leasing pattern
  • The Evictor pattern

Chapter 9 Patterns for Pluggability

  • The Strategy pattern
  • The Interceptor pattern
  • The Null Object pattern
  • The Context Object pattern
  • The Mock Object pattern
  • The Command pattern
  • The Command Processor pattern

Chapter 10 Patterns for Iteration

  • The Iterator pattern
  • Iterators in C#
  • The Enumeration Method pattern
  • The Collecting Parameter pattern
  • The Batch Method pattern
  • The Batch Iterator pattern

Chapter 11 Patterns for Object Lifecycles

  • Modal Behaviour
  • The Objects for States (State) pattern
  • The Methods for States pattern
  • The Collections for States pattern

Chapter 12 Patterns for Notification

  • Event flow
  • The Observer pattern
  • The Model?View?Controller (MVC) pattern
  • C# events
  • The Event Channel pattern
  • The Pipes and Filters pattern

Chapter 13 Pattern Pitfalls

  • Common pitfalls
  • Pattern applicability and quality
  • Dysfunctional patterns and applications
  • The Getters and Setters 'pattern'
  • The Singleton pattern (and avoiding it)