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:

    A creature not too bright or good
    For human nature’s daily food;
    For transient sorrows, simple wiles,
    Praise, blame, love, kisses, tears, and smiles.
    William Wordsworth (1770–1850)

    no thread
    Of cloudy silver sprinkles in your gown
    Its venom of renown, and on your head
    No crown is simpler than the simple hair.
    Wallace Stevens (1879–1955)