The template method is a well known design pattern, in which a base class implements a main execution operation, which calls one or (usually) more virtual template methods, which are usually overridden in derived classes. In this pattern, the base may or may not implement the virtual template methods. The base class may implement a template method if there is an appropriate default behavior which can occur for that method. The base class may also declare any template methods as pure virtual, which will force the derived classes to override those functions.