Java 設計模式 之 責任鏈模式

http://www.verejava.com/?id=16999052620463

ackage com.chain.theory;

public class TestHandler
{
	public static void main(String[] args)
	{
		Handler hrHandler=new HrHandler(null);
		Handler managerHandler=new ManagerHandler(hrHandler);
		Handler financeHandler=new FinanceHandler(managerHandler);
		Handler frontHandler=new FrontHandler(financeHandler);
		
		frontHandler.handleRequest("離職");
	}
}





package com.chain.theory;

public class ManagerHandler implements Handler
{
	private Handler nextHandler;
	
	public ManagerHandler(Handler nextHandler)
	{
		this.nextHandler=nextHandler;
	}
	

	@Override
	public void handleRequest(String request)
	{
		if("審批".equals(request))
		{
			System.out.println("經理審覈完畢");
			if(nextHandler!=null)
				nextHandler.handleRequest("批准");
		}
		
	}

}





package com.chain.theory;

public class HrHandler implements Handler
{
	private Handler nextHandler;
	
	public HrHandler(Handler nextHandler)
	{
		this.nextHandler=nextHandler;
	}
	

	@Override
	public void handleRequest(String request)
	{
		if("批准".equals(request))
		{
			System.out.println("人事批准");
			if(nextHandler!=null)
				nextHandler.handleRequest("完畢");
		}
		
	}

}





package com.chain.theory;

public interface Handler
{
	public void handleRequest(String request);
}





package com.chain.theory;

public class FrontHandler implements Handler
{
	private Handler nextHandler;
	
	public FrontHandler(Handler nextHandler)
	{
		this.nextHandler=nextHandler;
	}
	

	@Override
	public void handleRequest(String request)
	{
		if("離職".equals(request))
		{
			System.out.println("離職申請");
			if(nextHandler!=null)
				nextHandler.handleRequest("審覈");
		}
		
	}

}





package com.chain.theory;

public class FinanceHandler implements Handler
{
	private Handler nextHandler;
	
	public FinanceHandler(Handler nextHandler)
	{
		this.nextHandler=nextHandler;
	}
	

	@Override
	public void handleRequest(String request)
	{
		if("審覈".equals(request))
		{
			System.out.println("財務審覈完畢");
			if(nextHandler!=null)
				nextHandler.handleRequest("審批");
		}
		
	}

}

http://www.verejava.com/?id=16999052620463

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章