Developers and architects need to be able to recognize and correctly apply design patterns. Design Patterns in C++ - Facade and Proxy is part of a series on C++ patterns. It introduces you to the structural design patterns. This course covers the Facade and Flyweight design patterns as well as Null Object and Proxy design patterns. It also demonstrates how these patterns can be used in modern C++ (C++11 and beyond). First, we'll discuss Facade. Facade is a way to hide complex systems (often involving multiple components and their relationships), behind one, simple-to-use interface. Flyweight is used to share as much data with as many objects as possible, saving memory. Next, you will learn about Null Objects. This allows you to provide a neutral, no-op object that conforms to the interface, but does nothing. Proxy design patterns are the final topic. This allows an object to'stand in for' another object and conforms to the same interface while performing additional functions. These design patterns can be recognized in other libraries, and you will be able then to apply them in your own work.