Strategy Pattern Using Delegates (Func)- www.Hands-On-Coding.net presentation on Dec 14, 2010
Strategy Pattern using Func
An alternative to using
Strategy pattern using interfaces is Strategy Pattern using
delegates.
• Create a class with all the
different strategies.
public class
Calculator
{
public static int Add(int
num1, int num2)
{
return num1 +
num2;
}
public static int
Subtract(int num1, int num2)
{
return num1 - num2;
}
public
static int Multiply(int num1, int num2)
{
return num1 * num2;
}
public
static int Divide(int num1, int num2)
{
return num1 / num2;
}
}
• Test the code.
int a = 100;
int
b = 50;
Func<int, int, int>
calculate = Calculator.Add;
int sum =
calculate(100, 50);
calculate =
Calculator.Subtract;
int difference =
calculate(100, 50);
calculate =
Calculator.Multiply;
int product =
calculate(100, 50);
If you are new to the syntax,
Func. Func is like a delegate that in the above case takes
the first two ints as input and outputs the int (third).
Another cool way of using Func is using lambda
expressions.
Func<int, int, int>
calculate;
calculate = (x, s) => x + s;
We
could do the above in a single line itself. But what it
means is changing the strategly on the fly. Func is a pretty
cool feature that reduces a lot of the delegate code we had
to write in .NET 2.0. Happy coding !