© Dmitri Nesteruk 2018
Dmitri NesterukDesign Patterns in Modern C++https://doi.org/10.1007/978-1-4842-3603-1_19

19. Null Object

Dmitri Nesteruk1 
(1)
St. Petersburg, Russia
 

We don’t always choose the interfaces we work with. For example, I’d rather have my car drive me to my destination by itself, without me having to give 100% of my attention to the road and the dangerous lunatics driving next to me. And it’s the same with software: sometimes you don’t really want a piece of functionality, but it’s built into the interface. So what do you do? You make a Null Object.

Scenario

Suppose you inherited a library that uses the following interface :

1   struct Logger
2   {
3     virtual ~Logger() = default;
4     virtual void info(const string& s) = 0;
5      ...

Get Design Patterns in Modern C++: Reusable Approaches for Object-Oriented Software Design now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.