Structural Design Patterns in Modern C++
What you'll learn
- Understand what structural design patterns are
- How structural patterns help create bigger structures through inheritance & composition
- Use adapter to convert an incompatible interface into a compatible one
- Simply the complex interfaces of a system through facade
- Use proxy to control access to an object
- Understand how decorator can be used to add more behaviors to an object at runtime
- Form larger structures through recursive composition through composite
- Enable sharing of large number of objects through flyweight
- Separate abstraction & its implementation to provide variations without implementing too many classes
Requirements
- Basic knowledge of C++
- Good understanding of Object Oriented Programming
Description
Design Patterns are a way to solve common object oriented design problems. But understanding and learning design patterns is hard and takes time. Looking at a pattern is like looking at a solution without a problem, unless you've encountered the problem in the past.
This course aims to help you understand & implement Structural Design Patterns. Each pattern is explained with multiple examples and through modern C++. This helps you understand how the pattern can be implemented efficiently using language features. I provide real-world examples written in Modern C++. These examples will compile & execute on any platform that supports a C++ compiler.
This is how the course teaches structural patterns.
The intent, structure of the pattern is explained through UML class diagram.
Basic implementation details of the pattern are explained.
The pattern is implemented in a simple example.
You get familiar with the overall implementation of the pattern.
Another example is introduced that has design issues the pattern aims to resolve.
We examine the issues and refactor the code by applying the design pattern step by step.
Alternative scenarios & examples are explained along with differences between them. You also learn how to decide between different alternatives.
I discuss the pattern in context of C++ and how to tweak it for performance, reusability & maximum flexibility.
Finally, you'll learn when to use the pattern and its pros & cons.
This is an intensive discussion that spans multiple lectures. At the end of each section, you'll understand the pattern in depth and can apply it in your code or easily clear any design interview.
Who this course is for:
- Students who want to get a basic understanding of design patterns
- Software developers, project managers, architects who want to understand & implement design patterns in their projects
- C++ developers who want to see how modern C++ can be used to implement design patterns
- Developers who want to understand the alternative implementations of various structural patterns
Instructor
Civil engineer who found his calling in software development. Never worked as a Civil engineer, jumped at the first chance and started teaching C++ & Visual C++ 20 years ago. Currently, trains software professionals in various software companies in different technologies, such as Modern C++, Advanced C++, STL, Design Patterns, Android, Unity, Linux, etc. Very passionate about teaching and has trained more than 20,000 software professionals in a teaching career spanning more than 17 years. An avid gamer, currently trying his hand with game development in Unity & Unreal. Has a few Android applications to his credit, including one on Design Patterns.
Only thing he likes more than C++ is Modern C++.