January 2019
Intermediate to advanced
512 pages
14h 5m
English
The Fragile Base Class problem is not limited to the Template Method, but is, to some degree, inherent in all object-oriented languages. The problem arises when changes to the base class break the derived class. To see how this can happen, specifically when using the non-virtual interface, let's go back to the file writer and add the ability to write many strings at once:
class FileWriter { public: void Write(const char* data) { Preamble(data); ... write data to a file ... Postscript(data); } void Write(std::vector<const char*> huge_data) { Preamble(huge_data); for (auto data: huge_data) { ... write data to file ... } Postscript(huge_data); } private: virtual void Preamble(std::vector<const char*> huge_data) ...