Politika (programování)
Vzhled
Politika, návrh politik, anglicky policy classes je návrhové paradigma pocházející z jazyku C . Použití v dalších OOP jazycích se zatím nerozšířilo.
Jednoduchý příklad
[editovat | editovat zdroj]Níže je uvedený příklad programu Hello world, jak by ho šlo rozložit pomocí politik.
template < typename output_policy, typename language_policy >
class HelloWorld : public output_policy, public language_policy
{
using output_policy::Print;
using language_policy::Message;
public:
//behaviour method
void Run()
{
//two policy methods
Print( Message() );
}
};
#include <iostream>
class HelloWorld_OutputPolicy_WriteToCout
{
protected:
template< typename message_type >
void Print( message_type message )
{
std::cout << message << std::endl;
}
};
#include <string>
class HelloWorld_LanguagePolicy_English
{
protected:
std::string Message()
{
return "Hello, World!";
}
};
class HelloWorld_LanguagePolicy_German
{
protected:
std::string Message()
{
return "Hallo Welt!";
}
};
int main()
{
/* example 1 */
typedef HelloWorld<HelloWorld_OutputPolicy_WriteToCout, HelloWorld_LanguagePolicy_English> my_hello_world_type;
my_hello_world_type hello_world;
hello_world.Run(); // Prints "Hello, World!"
/* example 2
* does the same but uses another policy, the language has changed
*/
typedef HelloWorld< HelloWorld_OutputPolicy_WriteToCout, HelloWorld_LanguagePolicy_German > my_other_hello_world_type;
my_other_hello_world_type hello_world2;
hello_world2.Run(); // Prints "Hallo Welt!"
}