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:

    He prayed more deeply for simple selflessness than he had ever prayed before—and, feeling an uprush of grace in the very intention, shed the night in his heart and called it light. And walking out of the little church he felt confirmed in not only the worth of his whispered prayer but in the realization, as well, that Christ had become man and not some bell-shaped Corinthian column with volutes for veins and a mandala of stone foliage for a heart.
    Alexander Theroux (b. 1940)

    The simple opposition between the people and big business has disappeared because the people themselves have become so deeply involved in big business.
    Walter Lippmann (1889–1974)