Policy-based Design - Simple Example

Simple Example

Presented below is a simple (contrived) example of a C++ hello world program, where the text to be printed and the method of printing it are decomposed using policies.

#include #include template class HelloWorld : private OutputPolicy, private LanguagePolicy { using OutputPolicy::print; using LanguagePolicy::message; public: // Behaviour method void run const { // Two policy methods print(message); } }; class OutputPolicyWriteToCout { protected: template void print(MessageType const &message) const { std::cout << message << std::endl; } }; class LanguagePolicyEnglish { protected: std::string message const { return "Hello, World!"; } }; class LanguagePolicyGerman { protected: std::string message const { return "Hallo Welt!"; } }; int main { /* Example 1 */ typedef HelloWorld HelloWorldEnglish; HelloWorldEnglish hello_world; hello_world.run; // prints "Hello, World!" /* Example 2 * Does the same, but uses another language policy */ typedef HelloWorld HelloWorldGerman; HelloWorldGerman hello_world2; hello_world2.run; // prints "Hallo Welt!" }

You could easily write another OutputPolicy by adding a new class with the member function print and take that as the new OutputPolicy.

Read more about this topic:  Policy-based Design

Famous quotes containing the word simple:

    If when a businessman speaks of minority employment, or air pollution, or poverty, he speaks in the language of a certified public accountant analyzing a corporate balance sheet, who is to know that he understands the human problems behind the statistical ones? If the businessman would stop talking like a computer printout or a page from the corporate annual report, other people would stop thinking he had a cash register for a heart. It is as simple as that—but that isn’t simple.
    Louis B. Lundborg (1906–1981)

    The real drawback to “the simple life” is that it is not simple. If you are living it, you positively can do nothing else. There is not time.
    Katharine Fullerton Gerould (1879–1944)