
Explore the abstract factory pattern for creating families of related objects across platforms, emphasizing portability and platform dependence, with a coffee-making example illustrating product variants.
Explore implementing the abstract factory pattern in c++ by building a coffee product interface and concrete coffee variants, organized in factory and product namespaces, including filtered coffee, espresso, and americano.
Explore the builder pattern in theory, constructing complex products from simple objects step by step, with a director guiding engineers to vary internal representation and hide construction costs.
Learn to implement the builder design pattern in C++, constructing a transformer product with vehicle type and part lists under a director outside the namespace.
Explore the factory method concept by using an interface for product types, avoiding direct constructors, and leveraging class-specific static methods to instantiate espresso or Americano.
Implement the factory method pattern in C++ by defining a base coffee class and overriding a static method for products like Americano with water.
Explore the prototype design pattern by cloning objects with a clone method using the new operator, where electric and hydrogen cars inherit from a future car interface; factory not needed.
Implement the prototype design pattern in a prototype namespace by modeling a future car with electric and hydrogen variants, using a pure virtual method and versioned constructors.
Explore the singleton pattern, the simplest design to ensure a class has one instance, accessed via a static method like getInstance to share data across the program.
Implement the singleton design pattern in a C++ class with an ip property and a private instance, creating the instance on first access and providing get and set for ip.
Explore the adapter pattern to convert an interface into another interface so incompatible interfaces work together, using adapter classes in their basic form with a model and mobile phone example.
Implement the adapter pattern to convert a server camera with ip and multisensory attributes into a client camera, wiring set and get methods for ip, multisensory, and other properties.
Explore the bridge design pattern to decouple abstraction from implementation, enabling independent modules, flexible variation, and a management system example.
Implement the bridge pattern in c++ by defining a base interface with virtual methods, overriding behavior in concrete light and image types, and coordinating them through a management system.
Explore the decorator pattern in theory, showing how to add new responsibilities to objects quickly through composition, illustrated by espresso-based drinks like espresso, Americano, and latte.
Implement the decorator pattern by defining a base espresso class and composing drinks like americano and latte with milk and water.
Explore the facade pattern as a simplified interface to a complex library or subsystem. Implement an application class to wrap needed classes, revealing an easy-to-use interface for diverse applications.
This lecture demonstrates a facade implementation in C++, introducing an applicant class with constructors, a name getter, a department check method, and an eligibility test to process an application.
Explore the flyweight pattern to share similar objects and reduce memory usage, illustrated by a coffee shop example that avoids creating new customer objects for each order.
Implement the flyweight pattern in c++ by building a customer class with a name property and a flyweights factory to share intrinsic state across orders in a coffee shop scenario.
Explore the proxy pattern by treating a server-side class as an interface for a client-side use, enabling the client to call the server's display method through a proxy.
Implement a proxy pattern in C++ by building a server side camera class, using separate namespaces for server and client, defining a contract, and running the code to verify results.
Explore the command design pattern with C++, identifying invoker, receiver, and command roles, and learn how to encapsulate requests for execution. See a simple example that illustrates invoking a receiver.
Explore command implementation within design patterns in C++, starting from a base class and a simple terminal-based example.
Explore the interpreter pattern in theory with a basic gender interpreter example that translates input into gender labels, illustrating language-like translation in design patterns with C++.
Implement the interpreter pattern in c++ by building a simple gender-detection data set with hard-coded names and a constructor, showing how to interpret inputs based on name patterns.
Explore the mediator pattern to reduce complex communications by introducing a central mediator that coordinates messages between components.
Implement the mediator pattern in a simple chat where a user named Robert sends a message to John, which pops up and displays the exchange.
Explore the memento in theory, detailing how an originator and caretaker relate to the memento and discuss a simple example and code.
Implement the memento design pattern by creating originator, memento, and caretaker components. Capture and restore states, transition between states, and verify state consistency with the memento.
This course offers a hands-on and example-oriented approach to learning design patterns in C++. It’s specifically crafted to help you strengthen your understanding of object-oriented architecture through real world and practical implementations. Rather than overwhelming you with heavy theory, it guides you step-by-step using clear and concise examples that demonstrate how design patterns can be used to solve common software design problems.
All you need to get started is a basic knowledge of object-oriented programming. Whether you’ve just learned about classes and inheritance or have some beginner experience with C++, this course is designed to build upon that foundation and elevate your thinking to a more architectural level.
If you’re new to programming or transitioning into software development, this course will introduce you to essential software engineering principles using C++ through abstraction, encapsulation, and modular design. By the end, you’ll not only recognize major design patterns such as Singleton, Factory, Observer, Strategy, and more—but also understand when and how to apply them effectively in your own projects.
This course is ideal for beginners who are eager to improve their coding practices, design cleaner codebases, and gain a solid grasp of reusable, scalable software architecture—all through practical, approachable examples in C++.