Design patterns are reusable solutions to common programming problems. They speed up the development process by providing tested, proven development paradigms. This course starts at the nuts-and-bolts level and shows you everything through to advanced patterns and features, going in-depth to give you the knowledge you need.
Design patterns are reusable solutions to common programming problems. They speed up the development process by providing tested, proven development paradigms. This course starts at the nuts-and-bolts level and shows you everything through to advanced patterns and features, going in-depth to give you the knowledge you need.
You will begin this course with an introduction to SOLID principles, which will introduce you to clean-code concepts and will elevate your skills. With this knowledge in your toolbox, you will be ready to move on to studying creational design patterns, patterns related to the creation of objects, such as Singleton, Factory, and Dependency Injection. You will then acquire more in-depth knowledge of one specific creational pattern, the Dependency Inversion pattern, which will teach you how to write highly extensible, maintainable, and testable code. Moving on, you will get your hands dirty with structural design patterns and you will complete this course by learning the last group of patterns: behavioral design patterns.
By the end of this course you will be very confident in implementing a new feature in C# and .NET Core because, every time you have a problem, the correct design pattern will spontaneously come to mind.
This course uses .NET Core 2.0, and VS2017 community edition+, while not the latest version available, it provides relevant and informative content for legacy users of .NET Core, and Visual Studio.
About the Author
Dimitris Loukas is a software engineer currently writing Single Page Applications and using the latest JavaScript with Aurelia, Angular, C#, and .NET Core for a trading software firm. He has worked for two start-ups in the past, is active in the open source community, and loves taking up small side-projects. He has mastered Angular, Aurelia, and Vue.JS and is now interested in entering the ReactJS world. He is an early adopter of .NET Core and is fascinated by modern JavaScript and where the web is going.
This video provides an overview of the entire course.
SOLID principles can upgrade the code someone writes. The problem is, they are complex.
It’s fairly common for developers to write classes that do more than one thing.
The open/closed principle is rarely used as developers keep adding stuff to their classes.
The Liskov substitution principle is perhaps the hardest of the five. We need to provide a high quality explanation without making the video long and boring.
According to the interface segregation principle, a class shouldn’t be forced to implement a method that it does not need or can’t implement.
Dependency Inversion is so vital that a part of it, Dependency Injection will have its own section. But for now we need to demonstrate how important it is.
In this video, we will work almost exclusively with patterns so introductions are in order.
Sometimes we need to only have a single instance of a class.
Following the single responsibility principle, our consumer classes shouldn’t be the ones responsible for knowing how to instantiate classes that we need.
We need to take care of a few stuff in the course project. This presents a nice opportunity to involve the concept of Loose Coupling.
The Object Pool is a great pattern to avoid having to be constantly initializing our enemy classes every time we need them.
Not all C# developers are familiar with Dependency Injection and since we are dedicating a whole section on it we better spend a video trying to explain the most interesting topics.
There’s great value in creating a Custom IoC Container. The viewer will get to understand the inner workings of Dependency Injection.
The Custom Container is good for educational purposes but we need something more robust. So we have to move on to the built-in ASP.NET Core IoC Container.
The ASP.NET Core Container offers three different registration strategies. We need to make the distinctions clear.
Sometimes we want to combine objects while maintaining their types. To do that we use the decorator pattern.
We must make use of a foreign interface. We need to make it work with what we already have. That’s what the adapter pattern is for.
The Gameboard class is getting more and more complicated.
We want to provide a way to iterate through decks of cards as well as decks of decks.
We want to quickly and easily fetch data from the API in a loosely coupled way.
Sometimes we need to choose an algorithm at runtime. The strategy pattern is perfect at doing that.
Watching the primary player’s health is better than just using strategy.
We need a way to encapsulate the battles between players and enemies as well as cards and enemies.
The template method defines an abstract base class that forces sub-classes to only implement part of the functionality.
The state pattern offers a convenience class to store data about your sessions.
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.
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.