public abstract class Employee
// Every employee will have a supervisor
protected Employee supervisor;
// Event mechanism to know whenever a leave has been applied
public delegate void OnLeaveApplied(Employee e, Leave l);
public event OnLeaveApplied onLeaveApplied = null;
// This will invoke events when the leave will be applied
// i.e. the actual item will be handed over to the hierarchy of
// concrete handlers.
public void LeaveApplied(Employee s, Leave leave)
if (onLeaveApplied != null)
// This is the function which concrete handlers will use to take
// action, if they are able to take actions.
public abstract void ApproveLeave(Leave leave);
// getter to get the supervisor of current employee
public Employee Supervisor
supervisor = value;
// Using this we can apply for leave
public void ApplyLeave(Leave l)
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)