責任鏈模式 簡單模擬 Interceptor 攔截器
結構圖:

Intercept Interface :
Intercept Interface :
public interface Intercept {
public void intercept (ActionInvocation invocation) ;
}
public void intercept (ActionInvocation invocation) ;
}
First Intercept Implement:
執行結果:
流程圖:

public class FirstIntercept implements Intercept {
public void intercept(ActionInvocation invocation) {
System.out.println("begin First Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end First Intercept to do somethin");
}
}
public void intercept(ActionInvocation invocation) {
System.out.println("begin First Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end First Intercept to do somethin");
}
}
Second Intercept Implement :
public class SecondIntercept implements Intercept {
public void intercept(ActionInvocation invocation) {
System.out.println("begin Second Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end Second Intercept to do somethin");
}
}
public void intercept(ActionInvocation invocation) {
System.out.println("begin Second Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end Second Intercept to do somethin");
}
}
Third InterceptImplement :
public class ThirdIntercept implements Intercept {
public void intercept(ActionInvocation invocation) {
System.out.println("begin Third Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end Third Intercept to do somethin");
}
}
public void intercept(ActionInvocation invocation) {
System.out.println("begin Third Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end Third Intercept to do somethin");
}
}
ActionInvocation :
import java.util.ArrayList;
import java.util.List;
public class ActionInvocation {
private static int index = 0 ;
private List<Intercept> intercepts = new ArrayList<Intercept> ();
/*
* 這里用構造加載攔截器
*/
public ActionInvocation () {
intercepts.add(new FirstIntercept()) ;
intercepts.add(new SecondIntercept()) ;
intercepts.add(new ThirdIntercept()) ;
}
public void invoke () {
if (index < intercepts.size()) {
intercepts.get(index++).intercept(this); ;
}
}
}
import java.util.List;
public class ActionInvocation {
private static int index = 0 ;
private List<Intercept> intercepts = new ArrayList<Intercept> ();
/*
* 這里用構造加載攔截器
*/
public ActionInvocation () {
intercepts.add(new FirstIntercept()) ;
intercepts.add(new SecondIntercept()) ;
intercepts.add(new ThirdIntercept()) ;
}
public void invoke () {
if (index < intercepts.size()) {
intercepts.get(index++).intercept(this); ;
}
}
}
執行結果:
begin First Intercept to do somethin
begin Second Intercept to do somethin
begin Third Intercept to do somethin
end Third Intercept to do somethin
end Second Intercept to do somethin
end First Intercept to do somethin
begin Second Intercept to do somethin
begin Third Intercept to do somethin
end Third Intercept to do somethin
end Second Intercept to do somethin
end First Intercept to do somethin
流程圖:
posted on 2014-05-14 17:32 00001000 閱讀(362) 評論(0) 編輯 收藏 所屬分類: 設計模式