Was sind Policies?
-
Hallo, ich lese immer so viel über Policies in C++ und frage mich schon lange was das eigentlich genau ist... Könnt ihr mir weiterhelfen?
-
Polizisten ???
*g noe, war n scherz. ich wuerd mal sagen richtlinien.
Meep Meep
-
hallo, ein bisschen google:
http://www.informit.com/isapi/product_id%7B8A3DCB14-9FEB-498B-89B1-2CDBC13F7058%7D/element_id%7B8B70A070-43FF-4795-8C29-8F93156220B4%7D/st%7B3FAD3499-20A6-4782-9A96-05825F8E6E5B%7D/session_id%7B24D1D218-2526-489D-B863-65A3F8ABF359%7D/content/articlex.asp
ist zwar englisch, aber im kurzen überflug reicht es aus
-
Policy verwendet man dort wo man etwas machen möchte was aber auch Unterschiedlichster weisse passieren kann.
Du hast z.B. eine Klasse geschrieben die etwas machen soll und das Ergebnis später ausgeben muß. Wie diese Ausgabe geschehen soll ist der Klasse aber völlig unbekannt und kann auf verschiedenen Wegen geschehen.
Du baust Dir nun eine Klasse Ausgeben mit einer vorgegebenen Schnitstelle. Diese deklariert z.B. ausgeben();
Nun kann jeder der die Ausgabe anderst haben möchte eine Klasse schreiben die sich exakt an Deine Schnitstelle hält.
Ein Beispiel das genausoschlecht ist wie die Erklärung:
// DelMe.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include <iostream> ////////////////////////////////////////////////////////////////////////// // Wenn Du Windows verwendest #include <windows.h> struct PolicyMSGBox { void ausgeben() { MessageBox(NULL,"Test","PolicyMSGBox",NULL); } }; ////////////////////////////////////////////////////////////////////////// using namespace std; struct PolicyA { void ausgeben() { cout<<"Policy A"; } }; struct PolicyB { void ausgeben() { cout<<"Policy B"; } }; template <class T> struct PolicyUser : public T { void foo() { ausgeben(); } }; int main(int argc, char* argv[]) { PolicyUser<PolicyA> a; PolicyUser<PolicyB> b; a.foo(); b.foo(); ////////////////////////////////////////////////////////////////////////// // Wenn Du Windows verwendest PolicyUser<PolicyMSGBox> msg; msg.foo(); return 0; }
[edit]Wie immer zu lahm[/edit]