We may earn an affiliate commission when you visit our partners.
Mark Farragher

In 1994 the "Gang of Four" published a book titled "Design Patterns: Elements of Reusable Object-Oriented Software". This book contains 23 fundamental software design patterns. It is regarded as the standard reference manual for object-oriented design theory and practice.

In this course I will teach you the first 12 design patterns. These are all 5 creational- and all 7 structural design patterns. You use these patterns to create new objects efficiently and to create structure in your application architecture.

Read more

In 1994 the "Gang of Four" published a book titled "Design Patterns: Elements of Reusable Object-Oriented Software". This book contains 23 fundamental software design patterns. It is regarded as the standard reference manual for object-oriented design theory and practice.

In this course I will teach you the first 12 design patterns. These are all 5 creational- and all 7 structural design patterns. You use these patterns to create new objects efficiently and to create structure in your application architecture.

By the end of the course you will be fluent in all 12 design patterns. With this knowledge you will be well on your way to become a Senior Application Architect.

Why should you take this course?

You should take this course if you are a beginner or intermediate C# developer and want to take your career to the next level. Some of the patterns (e.g. 'Bridge') might sound very complicated, but all of my lectures are very easy to follow, and I explain all topics with clear code and many instructive diagrams. You'll have no trouble following along.

Or maybe you're working on the application architecture of a large project, and you need to create a robust design that is instantly clear to your team members? The patterns in this course will help you immensely.

Or maybe you're preparing for a C# related job interview? This course will give you an excellent foundation to answer any software architecture questions they might throw at you.

Enroll now

What's inside

Learning objectives

  • Learn all 12 structural and creational design patterns
  • What's up with singletons?
  • The benefit of the prototype pattern
  • Reduce memory with a flyweight
  • Expose subsystems with a facade
  • Wrap legacy components with the adapter pattern
  • The pros and cons of the composite child management interface
  • Multi-step object construction with the builder pattern
  • ... and much more!

Syllabus

Introduction

In this lecture I explain how this course is organized and I describe each of the upcoming sections in detail.

In this lecture we're going to take a closer look at Design Patterns, and what they can do for you.

Read more

Many lectures in this course contain source code examples. Feel free to download the code and follow along. And here's the good news: it doesn't matter if you have a Window, Mac or Linux computer. The code will run on all three operating systems.

In this lecture I demonstrate how my solutions and projects run on all operating systems. I will show you how to build and run the source code on a Mac, on Linux and in Visual Studio running on Windows 8.

At the end of this lecture you will have learned that .NET code is portable and can run on at least five different operating systems.

Background Info - About Me
In this section you will learn the five creational design patterns.
Welcome to the Creational Design Patterns section. I will give a quick introduction on how the section is organized before we get started.

The abstract factory pattern is ideal for constructing families of interrelated products. The pattern provides factories for constructing new objects and guarantees that each factory can only create objects that are compatible.

In this lecture I'll show you how the pattern works and how you can implement it in your own code. I will also demonstrate an example program that uses abstract factories to simulate an ecosystem in Africa and Australia.

The builder pattern is intended for constructing aggregate objects. These are objects that consist of a collection of internal parts. The pattern makes it very easy to build new objects by adding parts one at a time.

In this lecture I will explain the pattern and teach you how to implement it in your own code. I will also demonstrate an application that automates a fast-food restaurant and uses the builder pattern to assemble burger- and kids menus.

The factory method pattern provides an abstract virtual object constructor that you can override in subclasses. This gives you full control over the object creation process, in contrast to the 'new' operator which always creates a new instance of the given type.

In this lecture I will demonstrate the pattern and show you how to implement it in your own code. As an example I'll show you some code that uses the factory method pattern to automate a plastic toy factory.

The prototype design pattern uses a pre-built prototype object to quickly create new objects. This can be very useful if the object creation process is expensive in terms of time and memory.

In this lecture I'll show you how the pattern works and how you can implement it in your own code. I will also demonstrate an image generation program that uses a prototype object to quickly create a collection of related images.

The singleton pattern ensures that there can only ever be one single instance of a given class. This can be very useful for providing system-wide access to some kind of application support service.

In this lecture I'll show you how you can implement the pattern in your own code, and I will explain how this pattern became the most abused design pattern in the world. I will also show you how to build a simple diagnostic logger with the singleton pattern.

Congratulations on finishing this section. This is a recap of what we have learned.

Creational Design Patterns
In this section you will learn the seven structural design patterns.
Welcome to the Structural Design Patterns section. I will give a quick introduction on how the section is organized before we get started.

The adapter pattern lets you incorporate a legacy component into your application architecture that no longer supports the legacy interface. The pattern provides a special adapter class that can communicate both with the application architecture and with the legacy component.

I will show you a legacy stock price history library that uses decimal arrays, and then demonstrate how the adapter pattern can be used to make this library compatible with an application architecture that uses DataTables everywhere.

If you try to combine two orthogonal class hierarchies together, your application architecture will quickly devolve into a mess of duplicated classes spread out all over your object hierarchy. The bridge pattern solves this problem by keeping the two hierarchies completely separate, and connecting them with a single bridge.

I will show you how you can use the bridge pattern to create a very elegant and compact charting library that draws lines, squares and rectangles on various output devices.

The composite pattern is intended for building tree-like data structures. It allows you to nest component classes inside other component classes to build a tree structure.

I will demonstrate the pattern by building a simple web rendering library that output the correct HTML code for simple web documents.

The decorator pattern lets you enhance the functionality of an existing object by layering an arbitrary number of decorators objects on top of each class method. Each decorator can add custom enhancements to the default functionality.

I will demonstrate the pattern by building a simple program that calculates the price of pizza's with various extra toppings.

The facade pattern reduces the learning curve of a complex subsystem by layering a high level interface on top of the low level subsystem interface.

I will demonstrate the pattern by showing you a complex banking subsystem for managing bank accounts and buying equity on the stock market. I will build a facade that implements a mutual fund with a single high level 'Buy' method.

The flyweight pattern allows you to create very large data structures, by elegantly sharing object instances between nodes in the data structure. For example, the pattern can be used to reduce the number of leaf object instances in the composite pattern.

I will show you a simple web rendering library that loads images to display in a web page. The library uses the flyweight pattern to prevent the same image from being loaded twice.

The proxy pattern allows you to lazily instantiate an object at the last possible moment. Another use is with remoting, where the proxy acts as a surrogate for a remote object. And lastly you can use proxies to wrap access control code around an existing object.

I will show you how to use a proxy to implement a simple rate limiter around a web service API. The rate limiter restricts the number of API calls to one per second.

Congratulations on finishing this section. This is a recap of what we have learned.

Structural Design Patterns
In this section I'd like to thank you for completing the course and offer some final words
In this lecture I would like to thank you for finishing the course and offer some final words.
Bonus Offer

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores creational and structural design patterns, which are essential for building scalable and maintainable applications using object-oriented principles
Uses C#, a widely-used language in the .NET ecosystem, making the learned design patterns directly applicable to real-world projects and career advancement
Covers the "Gang of Four" design patterns, which are considered the foundational knowledge for any senior application architect or software engineer
Includes downloadable source code examples that run on Windows, Mac, and Linux, allowing learners to practice and implement the design patterns regardless of their operating system
Teaches design patterns such as Adapter, Bridge, and Composite, which are useful for integrating legacy systems and building complex, tree-like data structures
Focuses on design patterns that help create structure in application architecture, which is beneficial for developers working on large projects with team members

Save this course

Save Boost Your C# With Structural And Creational Design Patterns to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Boost Your C# With Structural And Creational Design Patterns with these activities:
Review Object-Oriented Programming (OOP) Principles
Solidify your understanding of OOP principles to better grasp the underlying concepts behind design patterns.
Show steps
  • Review the core concepts of OOP.
  • Practice implementing classes and objects.
  • Study examples of inheritance and polymorphism.
Review 'Head First Design Patterns'
Gain a different perspective on design patterns through a more visual and engaging learning experience.
Show steps
  • Read the chapters related to the course's design patterns.
  • Compare the book's explanations with the course content.
  • Note the differences in approach and examples.
Review 'Design Patterns: Elements of Reusable Object-Oriented Software'
Deepen your understanding of design patterns by studying the original source material.
Show steps
  • Read the chapters related to creational and structural patterns.
  • Compare the book's explanations with the course content.
  • Try implementing the patterns in C# based on the book's examples.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Blog Post Explaining a Design Pattern
Solidify your understanding by explaining a design pattern in your own words, targeting an audience of fellow developers.
Show steps
  • Choose a design pattern from the course.
  • Research the pattern and its applications.
  • Write a clear and concise explanation of the pattern.
  • Include code examples and diagrams to illustrate the pattern.
  • Publish your blog post on a platform like Medium or your own website.
Implement Design Patterns from Scratch
Reinforce your understanding by implementing the design patterns covered in the course without referring to the course materials.
Show steps
  • Choose a design pattern from the course.
  • Implement the pattern in C# from memory.
  • Compare your implementation with the course examples.
  • Refactor your code for clarity and efficiency.
Design a System Using Design Patterns
Apply your knowledge by designing a small system that utilizes several of the design patterns learned in the course.
Show steps
  • Choose a problem domain for your system.
  • Identify the design patterns that are suitable for the system's architecture.
  • Implement the system in C# using the chosen patterns.
  • Document your design choices and rationale.
Answer Questions on Design Patterns Forums
Reinforce your understanding by helping others learn about design patterns.
Show steps
  • Find online forums or communities related to C# and design patterns.
  • Browse the forums for questions related to the patterns covered in the course.
  • Provide clear and helpful answers to the questions.
  • Explain your reasoning and provide code examples where appropriate.

Career center

Learners who complete Boost Your C# With Structural And Creational Design Patterns will develop knowledge and skills that may be useful to these careers:

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Boost Your C# With Structural And Creational Design Patterns.
Is the seminal work on design patterns, often referred to as the 'Gang of Four' book. It provides detailed explanations and examples of the 23 fundamental design patterns. While the course covers 12 patterns, this book offers a broader perspective and deeper understanding. It is highly recommended as a reference for any serious software architect or developer.
Offers a more approachable and engaging introduction to design patterns compared to the 'Gang of Four' book. It uses a visual and interactive style to explain the concepts. While it may not be as comprehensive, it can be a great resource for beginners or those who prefer a less formal learning style. It provides a solid foundation for understanding the patterns covered in the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser