Monday, February 10, 2020

Chain of Responsibility Design Pattern


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Management management = new Management(null);
Exp exp = new Exp(management);
Employee emp = new Employee(exp);
emp.HandleRequest(30000);
emp.HandleRequest(25000);
emp.HandleRequest(10000);
Console.ReadLine();
}
public interface Ihandle
{
void HandleRequest(int id);
}
public class Employee :Ihandle
{
Ihandle _handle;
public Employee(Ihandle handle)
{
this._handle = handle;
}
public void HandleRequest(int id)
{
if (id > 1000 && id <= 10000)
{
Console.WriteLine("Fresher");
}
else if (this._handle != null)
{
this._handle.HandleRequest(id);
}
}
}

public class Exp : Ihandle
{
private Ihandle _handle;
public Exp(Ihandle handle)
{
this._handle = handle;
}
public void HandleRequest(int id)
{
if(id>=10001 && id<=20000)
{
Console.WriteLine("Experienced");
}
else if(this._handle!=null)
{
this._handle.HandleRequest(id);
}
}
}
public class Management : Ihandle
{
Ihandle _handle;
public Management(Ihandle handle)
{
this._handle = handle;
}
public void HandleRequest(int id)
{
if(id>=20001 &&id <= 30000)
{
Console.WriteLine("Management");
}
else if(this._handle!=null)
{
this._handle.HandleRequest(id);
}
}
}
}
}