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