程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 責任鏈模式

責任鏈模式

編輯:關於JAVA

package pattern.chainofresponsibility;

/**
* 責任鏈模式:Chain of Responsibility
* @version 2009-5-9
* @author Winty([email protected])
*/
public class ChainOfResponsibilityTest{
public static void main(String[] args){
Handler handler1 = new ConcreteHandler1();
Handler handler2 = new ConcreteHandler2();
Handler handler3 = new ConcreteHandler3();

//設置責任鏈
handler3.setSuccessor(handler2);
handler2.setSuccessor(handler1);

//發送命令
handler3.handleRequest();
}
}

/**
*抽象處理者
*/
abstract class Handler{
protected Handler successor;

public Handler getSuccessor(){
return successor;
}

public void setSuccessor(Handler successor){
this.successor = successor;
}

public abstract void handleRequest();
}

/**
*具體處理者
*/
class ConcreteHandler1 extends Handler{
public void handleRequest(){
if(getSuccessor() != null){
System.out.print("Request passed:from class Concrete1");
System.out.println(" to class" + getSuccessor().getClass().getName());

getSuccessor().handleRequest();
}
else{
System.out.println("Request handled in ConcreteHandler1");
}
}
}

/**
*具體處理者
*/
class ConcreteHandler2  extends Handler{
public void handleRequest(){
if(getSuccessor() != null){
System.out.print("Request passed:from class Concrete2");
System.out.println(" to class " + getSuccessor().getClass().getName());

getSuccessor().handleRequest();
}
else{
System.out.println("Request handled in ConcreteHandler2");
}
}
}

/**
*具體處理者
*/
class ConcreteHandler3  extends Handler{
public void handleRequest(){
if(getSuccessor() != null){
System.out.print("Request passed:from class Concrete3");
System.out.println(" to class " + getSuccessor().getClass().getName());

getSuccessor().handleRequest();
}
else{
System.out.println("Request handled in ConcreteHandler3");
}
}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved