Saturday, March 2, 2013

Chain design patter using school life example


in ChainOfResponsibilityPatternThroughSchool class:-
--------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GuideLines
{
   public class ChainOfResponsibilityPatternThroughSchool
    {
        public abstract class Chain
        {
            protected Chain nextClassInChain;
            public abstract void DealWithRequirement(string requirement);
            public void NextInChain(Chain next)
            {
                this.nextClassInChain = next;
            }
        }

        public class Highschool : Chain
        {

            public override void DealWithRequirement(string requirement)
            {
                switch (requirement)
                {
                    case "10th":
                        Console.WriteLine("{0} staff", this);
                        break;
                    default:
                        if (nextClassInChain != null)
                            nextClassInChain.DealWithRequirement(requirement);
                            break;
                }
            }
        }
        public class Intermediate : Chain
        {

            public override void DealWithRequirement(string requirement)
            {
                switch (requirement)
                {
                    case "12th": Console.WriteLine("{0} requirement.",this);
                        break;
                    default:
                        if (nextClassInChain != null)
                            nextClassInChain.DealWithRequirement(requirement);
                        break;
                }
            }
        }
        public class Btech : Chain
        {

            public override void DealWithRequirement(string requirement)
            {
                switch (requirement)
                {
                    default: Console.WriteLine("{0} has managed the {1} ",requirement ,this);
                        break;
                }
            }
           public Btech() { ;}
        }
    }
}
==============================================
and on Program.cs part
   public class Program : ChainOfResponsibilityPatternThroughSchool
    {
        public static void Main(string[] args)
        {
          
            #region Chain pattern with Hirarchy level

            Chain boy = new Highschool();
            Chain student = new Intermediate();
            Chain engineer = new Btech();

            boy.NextInChain(student);
            student.NextInChain(engineer);

            boy.DealWithRequirement("BTech");
            boy.DealWithRequirement("12th");
            boy.DealWithRequirement("Intermediate");
            boy.DealWithRequirement("10th");
            Console.ReadLine();
            #endregion
       }
}

No comments:

Post a Comment