Strategy Pattern
Part of TutorialDesignPatterns
Description
Examples of implementing the Gang of Four Strategy Pattern. You can find description on: http://en.wikipedia.org/wiki/Strategy_pattern
Example : Strategy Pattern
/*
* This source code shows how to code Strategy Pattern
* in D programming language
* And also shows how constructor and destructor works
* in strategy pattern
*
*/
import std.stdio;
interface Strategy {
void performOperation();
}
class Algorithm1 : Strategy {
this() { writefln("Algorithm1 created"); }
~this() { writefln("Algorithm1 destroyed"); }
void performOperation() {
writefln("Algorithm 1's Operation");
}
}
class Algorithm2 : Strategy {
this() { writefln("Algorithm2 created"); }
~this() { writefln("Algorithm2 destroyed"); }
void performOperation() {
writefln("Algorithm 2's Operation");
}
}
class Context {
private Strategy instance;
this(Strategy s) { this.instance = s; }
~this() { writefln("Context destroyed"); }
void performAlgorithm() {
this.instance.performOperation();
}
}
int main() {
Context c;
writef("[0] Algorithm 1\n[1] Algorithm 2\nAlgorithm: ");
uint input;
scanf("%i", &input);
if (input == 0) {
c = new Context(new Algorithm1);
c.performAlgorithm(); // must print "Algorithm 1's Operation"
} else if (input == 1) {
c = new Context(new Algorithm2);
c.performAlgorithm(); // must print "Algorithm 2's Operation"
} else {
writefln("Invalid input! Program will now terminate...");
}
return 0;
}
