Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Contents tagged with .net asp.net strategy pattern C# common design patterns

  • 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 !