java中23种设计模式之15-责任链模式(ChainOfResponsibility pattern)

interface Vacation
{
public void requestVacation(int days);
}

class Clerk implements Vacation
{
private int days;
public void requestVacation(int days)
{
this.days=days;
System.out.println("request vacation "+days+" days");
}
public int getVacation()
{
return days;
}
}

abstract class AbstractManager
{
abstract void handleRequest(Clerk clerk);
}
class DepartmentManager extends AbstractManager
{
public void handleRequest(Clerk clerk)
{
System.out.print("-->request DepartmentManager");
if(clerk.getVacation()<=3)
{
System.out.println("\nDepartmentManager agree");
}
else
{
new HRManager().handleRequest(clerk);
}
}

}
class HRManager extends AbstractManager
{
public void handleRequest(Clerk clerk)
{
System.out.print("-->request HRManager");
if(clerk.getVacation()<=7)
{
System.out.println("\nHRManager agree");
}
else
{
new GeneralManager().handleRequest(clerk);
}
}
}
class GeneralManager extends AbstractManager
{
public void handleRequest(Clerk clerk)
{
System.out.print("-->request GeneralManager");
if(clerk.getVacation()<=30)
{
System.out.println("\nGeneralManager agree");
}
else
{
System.out.println("\nyou are fired");
}
}
}

public class ChainOfResponsibilityPattern
{
public static void main(String[] args)
{
Clerk aClerk=new Clerk();
aClerk.requestVacation(25);
AbstractManager aManager=new DepartmentManager();
aManager.handleRequest(aClerk);
}
}

posted on 2015-04-02 20:47  wudymand  阅读(147)  评论(0编辑  收藏  举报

导航