Sorry, this page is no longer available
Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Packt - Course Instructors

This course provides a comprehensive exploration of creational design patterns in modern C++. Starting with the fundamental S.O.L.I.D. principles, it prepares you with a strong foundation in design. You will then dive into patterns such as Singleton, where you'll learn about lazy instantiation, thread safety, and common issues, while the Factory Method and Abstract Factory patterns are broken down to highlight their power in managing object creation complexity.

Read more

This course provides a comprehensive exploration of creational design patterns in modern C++. Starting with the fundamental S.O.L.I.D. principles, it prepares you with a strong foundation in design. You will then dive into patterns such as Singleton, where you'll learn about lazy instantiation, thread safety, and common issues, while the Factory Method and Abstract Factory patterns are broken down to highlight their power in managing object creation complexity.

As you progress, the course presents more advanced topics like the Object Pool and Prototype patterns, helping you understand how to optimize memory usage and object duplication. Each pattern is paired with real-world examples and modern C++ techniques, ensuring you not only understand the theory but can also apply the patterns in practical scenarios. You'll also explore alternative design solutions like the Monostate pattern and strategies for improving flexibility in software architecture.

By the end of the course, you will have an in-depth understanding of how to use creational patterns to solve complex design problems in a systematic and efficient way. This course equips you with the tools and knowledge to write better code by leveraging the power of creational design patterns in modern C++.

This course is designed for intermediate to advanced C++ developers who have a working knowledge of object-oriented programming and want to enhance their understanding of design patterns. Familiarity with C++ and later versions is required.

Enroll now

Here's a deal for you

Save money when you learn with a deal that may be relevant to this course.
All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Syllabus

Introduction
In this module, we will explore the foundational concepts of software design, starting with an introduction to the course and progressing through key principles and patterns. We’ll cover the basics of the Unified Modeling Language (UML), dive into the S.O.L.I.D. design principles, and introduce creational patterns that set the stage for more advanced discussions.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Builds upon a foundation of object-oriented programming and familiarity with C++ to explore advanced design patterns
Explores S.O.L.I.D. principles, which are essential for writing maintainable and scalable object-oriented code
Covers creational patterns like Singleton, Factory Method, and Abstract Factory, which are widely used in software design
Examines advanced topics such as lazy instantiation, multithreading challenges, and memory management optimizations
Uses real-world examples and modern C++ techniques to demonstrate the practical application of design patterns
Teaches design patterns such as Object Pool and Prototype, which can help optimize memory usage and object duplication

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Mastering creational design patterns in modern c++

According to students, this course provides a solid foundation in creational design patterns using modern C++ techniques. Learners frequently praise the clarity of the explanations and the effectiveness of the practical code examples used to demonstrate each pattern. Many feel the course significantly improves their understanding of applying patterns like Singleton, Factory Method, and Builder in real-world scenarios. While generally well-received, some feedback indicates that a strong prior grasp of C++ and OOP is essential to keep pace with the material.
Some wish for more advanced depth.
"While the core patterns are covered well, I would have liked slightly deeper dives into advanced topics or performance implications."
"The course provides excellent foundational knowledge, but some complex aspects could be explored further."
"Good overview, but for advanced practitioners, it might feel slightly introductory in places."
Needs strong C++ and OOP background.
"As stated in the course description, you definitely need a strong background in C++ and OOP before taking this."
"Found it challenging at times; make sure you are comfortable with intermediate C++ features."
"This course is best for someone already familiar with C++ and wants to deepen their knowledge."
Uses relevant, up-to-date C++ features.
"Appreciated the use of modern C++ features throughout the examples."
"The course successfully shows how to implement these classic patterns using contemporary C++."
"It's good to see design patterns taught with modern C++ syntax and practices."
Course builds a strong understanding of patterns.
"This course really helped solidify my understanding of the creational patterns and when to use them."
"I feel much more confident applying these patterns in my C++ projects now."
"Gave me a solid understanding of design principles before diving into the patterns."
Course features helpful, practical code examples.
"The code examples provided for each pattern were extremely useful and helped solidify my understanding."
"I loved that the course included real-world examples; it made the patterns much easier to grasp."
"The hands-on coding examples are the strongest part of the course for me."
Instructor explains complex concepts clearly.
"The instructor is amazing at explaining complex patterns in a very understandable way."
"I really appreciated how each pattern was broken down step-by-step."
"The explanations were very clear and easy to follow, even for the more difficult concepts."

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 Creational Design Patterns in Modern C++ with these activities:
Review S.O.L.I.D. Principles
Reinforce your understanding of the S.O.L.I.D. principles, which are fundamental to understanding and applying creational design patterns effectively.
Browse courses on Object-oriented Design
Show steps
  • Read articles or watch videos explaining each principle (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion).
  • Find code examples demonstrating violations of each principle and refactor them to adhere to S.O.L.I.D.
  • Write a short summary of each principle in your own words.
Review 'Design Patterns: Elements of Reusable Object-Oriented Software'
Gain a deeper understanding of design patterns by studying the seminal work on the subject.
View Design Patterns on Amazon
Show steps
  • Read the chapters related to creational design patterns (Singleton, Factory Method, Abstract Factory, Builder, Prototype).
  • Compare the examples in the book with the C++ implementations discussed in the course.
  • Identify the advantages and disadvantages of each pattern based on the book's analysis.
Implement Singleton with Thread Safety
Solidify your understanding of the Singleton pattern by implementing it with proper thread safety mechanisms to avoid common pitfalls.
Browse courses on Singleton
Show steps
  • Implement a basic Singleton class in C++.
  • Add thread safety using mutexes or atomic operations to handle concurrent access.
  • Write unit tests to verify that only one instance of the Singleton is created, even under heavy multithreaded load.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Game Object Factory
Apply the Factory Method or Abstract Factory pattern to create a system for instantiating game objects, demonstrating practical application of these patterns.
Browse courses on Factory Method
Show steps
  • Define an interface for game objects (e.g., `IGameObject`).
  • Implement concrete game object classes (e.g., `Player`, `Enemy`, `Obstacle`).
  • Create a Factory Method or Abstract Factory to instantiate these game objects based on input parameters.
  • Integrate the factory into a simple game loop to spawn objects dynamically.
Document Your Design Pattern Implementations
Reinforce your understanding by documenting the design patterns you've implemented, explaining their structure, intent, and usage.
Show steps
  • Choose a design pattern from the course (e.g., Singleton, Factory Method).
  • Write a detailed explanation of the pattern's intent and structure.
  • Provide a C++ code example demonstrating the pattern's implementation.
  • Explain the advantages and disadvantages of using the pattern in different scenarios.
Review 'Modern C++ Design: Generic Programming and Design Patterns Applied'
Explore advanced C++ techniques for implementing design patterns, enhancing your ability to write flexible and maintainable code.
View Melania on Amazon
Show steps
  • Read the chapters related to creational patterns and compare them to the course material.
  • Analyze the use of templates and generic programming in the book's examples.
  • Identify potential improvements to your own implementations based on the book's techniques.
Contribute to an Open Source Project Using Creational Patterns
Apply your knowledge of creational patterns by contributing to an open-source project, gaining real-world experience and collaborating with other developers.
Browse courses on Open Source
Show steps
  • Find an open-source C++ project that uses or could benefit from creational design patterns.
  • Identify an area where you can contribute, such as refactoring existing code or adding new features.
  • Implement the chosen creational pattern and submit a pull request with your changes.
  • Respond to feedback from other developers and refine your implementation.

Career center

Learners who complete Creational Design Patterns in Modern C++ will develop knowledge and skills that may be useful to these careers:
Software Architect
A Software Architect is responsible for high level design of software systems, and this course provides many important concepts in designing robust and adaptable systems. Understanding creational patterns like Singleton, Factory Method, Abstract Factory, Object Pool, Prototype, and Builder is crucial to build adaptable and maintainable architectuture. The course emphasizes real-world examples and alternative design solutions. This course is very helpful for any software architect aiming to design efficient systems in C++.
Technical Lead
A Technical Lead guides a team of developers, and this course can assist in leading your team in the most effective ways. This course covers design patterns like Singleton, Factory and Abstract Factory, which are core to development of robust systems. As a Technical Lead, overseeing the application of design patterns is important to maintain the quality and structure of software projects. The course will help you to make key design decisions in your leadership role, and ensure your team is creating efficient code. This course is very helpful to any technical lead to lead their team in modern C++.
Software Engineer
A Software Engineer is a crucial role in the development of robust and scalable software applications, and an understanding of design patterns is essential for success. This course, focusing on creational design patterns in modern C++, can be very helpful as it provides a strong foundation in designing modular and maintainable code. The course will familiarize you with patterns like Singleton, Factory Method, Abstract Factory, Object Pool, Prototype, and Builder. These are indispensable for creating adaptable software architectures and improving workflow. This course may be particularly useful for any software engineer aiming to write clean code, by leveraging the power of creational design patterns in modern C++.
Application Developer
An Application Developer who works with modern C++ can benefit from this course which focuses on creational patterns. Application Developers use patterns such as Singleton to manage global resources, Factory Method to abstract object creation, and Object Pool to optimize resource usage. This course also covers topics such as lazy instantiation, thread safety and alternative designs. This course is very helpful for application developers that want to use C++ to create better applications.
Backend Developer
A Backend Developer designs and implements the server-side logic and databases for applications, and this course can give you expertise in design patterns in the C++ ecosystem. A Backend Developer can use patterns such as Singleton to manage global resources like database connections, Factory Method and Abstract Factory for creating database objects, and Object Pool to manage database connections efficiently. This course covers real-world examples and modern C++ techniques ensuring not just theory but practical implementation for backend systems. This course introduces modern C++ workflows that help you as a backend developer.
Systems Programmer
A Systems Programmer works on low level aspects of operating systems, and this course focusing on C++ design patterns can help you develop robust system software. The Object Pool pattern covered in this course is critical for managing kernel level resources. Singleton pattern is useful for controlling system wide instances. This course can be very helpful as it covers practical application of these patterns in real-world scenarios. A Systems Programmer will benefit greatly from the practical uses of C++ design patterns covered in this course.
Game Developer
Game Developers often need to manage resources efficiently, and that's where a course in creational design patterns can be beneficial. This course explores design patterns like the Object Pool pattern which is very useful in optimizing game performance by reusing objects instead of creating new ones. The Prototype pattern is also explored, enabling efficient cloning of game objects. This course also covers Singleton, Factory Method, Abstract Factory, and Builder patterns which are used in modern game development workflows. If you want to be a game developer, particularly in C++, this course is very helpful to build the architecture of your game.
Software Consultant
A Software Consultant advises clients on how to improve their software development processes and this course can equip you with the knowledge needed about creational design patterns. This course will help you to advise clients on best practices in software architecture and design which can drastically improve maintainability and scale. The real world examples in this course will enable you to guide clients in developing their systems. This course may be useful for a Software Consultant seeking to improve client's software development.
Embedded Systems Engineer
An Embedded Systems Engineer develops and implements software for resource constrained hardware, which makes creational patterns especially relevant. This course provides practical examples in memory management, such as Object Pool and Prototype pattern, which are indispensable for such systems. Singleton can help manage unique resources. The emphasis on real-world examples will be very helpful for you as an Embedded Systems Engineer. This course will help you to develop optimized memory allocation and resource management systems for embedded environments.
Robotics Engineer
A Robotics Engineer develops software for robotic systems and the study of design patterns is very helpful. This course covers patterns like Singleton which can be used to manage shared resources, and Object Pool which can help optimize hardware performance. This course can assist a Robotics Engineer in efficiently managing resources and creating robust robotics software using modern C++ patterns. This course may be useful particularly if the robot's software is using C++.
Algorithm Developer
An Algorithm Developer implements complex algorithms, and this course is helpful because it can help create maintainable code. This course covers how to use design patterns to create well structured and optimized code, using patterns such as Singleton, Factory Method, and Object Pool. This course may be useful for an Algorithm Developer to improve the structure and efficiency of their code using modern C++ techniques. The knowledge of real world examples in this course would be particularly helpful for developers of algorithms.
Cloud Engineer
Cloud Engineers build, maintain, and optimize cloud infrastructure, which requires effective resource management. This course covers design patterns such as Object Pool, Prototype and Singleton patterns, all useful for cloud based applications. The course provides real world examples of design patterns in modern C++, which may be helpful when designing cloud applications. This course may be useful for Cloud Engineers who want to optimize their applications using C++.
Data Engineer
A Data Engineer builds and manages data infrastructure, and this course on design patterns may be helpful in designing efficient systems related to data processing. The Factory and Abstract Factory patterns covered in this course are useful for managing data sources. The Singleton pattern can be used to manage connections to different databases. This course can help Data Engineers to write more modular and maintainable data processing systems using modern C++. This course may be helpful for designing C++ based data infrastructure.
Financial Software Developer
A Financial Software Developer creates applications for the finance industry, where system stability is crucial. This course may be useful for designing reliable and scalable software by covering design patterns such as Singleton, Factory Method, Abstract Factory, and Object Pool. The course uses real-world examples which can be used in financial systems. A Financial Software Developer may use this course to write efficient and maintainable financial applications. This course may be helpful for a developer in a finance background who is using C++.
Research Scientist
A Research Scientist often develops software for experimental research, and understanding design patterns is useful practice, particularly in the C++ ecosystem. The Object Pool pattern for memory management, and Prototype pattern for cloning objects can be very useful to design scientific software. This course goes into depth on the practical implementation of diverse patterns. This course may be useful for Research Scientists who want to develop software for their experiments using C++.

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 Creational Design Patterns in Modern C++.
Foundational text on design patterns, often referred to as the 'Gang of Four' book. It provides detailed explanations and examples of creational, structural, and behavioral patterns. While the examples are not in C++, the underlying principles are directly applicable and provide a strong theoretical understanding. This book serves as an excellent reference and provides a broader context for the creational 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