Reader Level:
ARTICLE

Let's Play Around With Strategy Design Pattern

Posted by Vijay Prativadi Articles | Design & Architecture April 22, 2012
Today, in this article let's play around with an interesting and one of the most useful concepts of design patterns, which will be hosted in a web app.
  • 0
  • 0
  • 3199

Introduction

 

Today, in this article let's play around with one of the interesting and most useful concept of design pattern, which will be hosted on web app.
 
Question: What is Strategy Pattern?

 

In simple terms "The algorithmic code is implemented in various specific classes and can be used when required. The algorithmic code differs from one class to another".

 

I think we are now good to go to implement this wonderful concept.

 

Step 1: The complete code of Default.aspx looks like this:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="StatergyDesignPatternApplication._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<
body>
    <form id="form1" runat="server">
    <div>
        <h1 style="text-align: center; font-family: Verdana; font-size: large; color: Maroon">
            Strategy Pattern - Design Patterns</h1>
        <center>
            <table>
                <tr>
                    <td>
                        <asp:Label ID="Label1" runat="server" Text="Please Enter First Number" Font-Size="Small"
                            Font-Bold="true" Font-Italic="true" Font-Names="Verdana"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="Label2" runat="server" Text="Please Enter Second Number" Font-Size="Small"
                            Font-Bold="true" Font-Italic="true" Font-Names="Verdana"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="Button1" runat="server" Text="Addition" Width="165px" Font-Names="Verdana"
                            BackColor="Orange" OnClick="Button1_Click" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="Button2" runat="server" Text="Subtraction" Width="165px" Font-Names="Verdana"
                            BackColor="Orange" OnClick="Button2_Click" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="Button3" runat="server" Text="Multiplication" Width="165px" Font-Names="Verdana"
                            BackColor="Orange" OnClick="Button3_Click" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="Button4" runat="server" Text="Division" Width="165px" Font-Names="Verdana"
                            BackColor="Orange" OnClick="Button4_Click" />
                    </td>
                </tr>
            </table>
            <table>
                <tr>
                    <td colspan="2">
                        <asp:Label ID="lblResult" runat="server" Font-Names="Verdana" ForeColor="Brown"></asp:Label>
                    </td>
                </tr>
            </table>
        </center>
    </div>
    </form>
</body>
</
html>
 

Step 2: The complete code of IArthmetic.cs looks like this:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace StatergyDesignPatternApplication
{
    public interface IArthmetic { double ArthmeticOperation(double a, double b);}
}


Step 3: The complete code of AdditionClass.cs looks like this:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace StatergyDesignPatternApplication
{
    public class AdditionClass : IArthmetic { public double ArthmeticOperation(double a, double b) { return a + b; } }
} 
 

Step 4: The complete code of SubtractionClass.cs looks like this:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace StatergyDesignPatternApplication
{
    public class SubtractionClass : IArthmetic
 {
 public double ArthmeticOperation(double a, double b)
 {
 return a - b;
 }
 }
} 
 

Step 5: The complete code of MultiplicationClass.cs looks like this:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace StatergyDesignPatternApplication
{
    public class MultiplicationClass : IArthmetic
 {
 public double ArthmeticOperation(double a, double b)
 {
 return a * b;
 }
 }
}
 

Step 6: The complete code of DivisionClass.cs looks like this:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace StatergyDesignPatternApplication
{
    public class DivisionClass : IArthmetic
 {
 public double ArthmeticOperation(double a, double b)
 {
 return a / b;
 }
 }
}
 

Step 7: The complete code of Default.aspx.cs looks like this:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace StatergyDesignPatternApplication
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e){}
        public void Button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(TextBox1.Text) || string.IsNullOrEmpty(TextBox2.Text))
            {
                lblResult.Text = "Please Enter Some Values";
            }
            else{lblResult.Text = "Addition Result of " + TextBox1.Text + " and " + TextBox2.Text + " is: <b>" + objAdd.ArthmeticOperation(Convert.ToDouble(TextBox1.Text),
                Convert.ToDouble(TextBox2.Text)).ToString() + "</b>";TextBox1.Text = "";TextBox2.Text = "";
            }
        }
        public void Button2_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(TextBox1.Text) || string.IsNullOrEmpty(TextBox2.Text))
            {
                lblResult.Text = "Please Enter Some Values";
            }
            else{lblResult.Text = "Subtraction Result of " + TextBox1.Text + " and " + TextBox2.Text + " is: <b>" + objSub.ArthmeticOperation(Convert.ToDouble(TextBox1.Text),
                Convert.ToDouble(TextBox2.Text)).ToString() + "</b>";TextBox1.Text = "";TextBox2.Text = "";
            }
        }
        public void Button3_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(TextBox1.Text) || string.IsNullOrEmpty(TextBox2.Text)){lblResult.Text = "Please Enter Some Values";
            }
            else{lblResult.Text = "Multiplication Result of " + TextBox1.Text + " and " + TextBox2.Text + " is: <b>" + objMul.ArthmeticOperation(Convert.ToDouble(TextBox1.Text),
                Convert.ToDouble(TextBox2.Text)).ToString() + "</b>";TextBox1.Text = "";TextBox2.Text = "";
            }
        }
        public void Button4_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(TextBox1.Text) || string.IsNullOrEmpty(TextBox2.Text)){lblResult.Text = "Please Enter Some Values";
            }
            else{lblResult.Text = "Division Result of " + TextBox1.Text + " and " + TextBox2.Text + " is: <b>" + objDiv.ArthmeticOperation(Convert.ToDouble(TextBox1.Text),
                Convert.ToDouble(TextBox2.Text)).ToString()+"</b>";TextBox1.Text = "";TextBox2.Text = "";
            }
        }
        #region Instance VariablesIArthmetic objAdd = new AdditionClass();IArthmetic objSub = new SubtractionClass();
        IArthmetic objMul = new MultiplicationClass();IArthmetic objDiv = new DivisionClass();
        #endregion
    }
}

 

Step 8: The output of the application looks like this:


 

Output1.png

Step 9: The output of the nothing entered application looks like this:
 

Output2.png
 

 

Step 10: The output of the addition operation application looks like this:

  Output3.png

I hope this article is useful for you.

COMMENT USING

Trending up