Cpp Coding Standards/DESIGN/DIP
Dependency inversion principle (DIP):
- high-level modules should not depend on low-level ones. Instead, they should both depend on abstractions.
- abstractions should not depend on details, but details should depend on abstractions.
Implement DIP by using abstract interfaces (a class consisting of pure virtual functions only). Typically, provide a public virtual destructor to facilitate polymprphic deletion.
See the original article for further explanation.