public class ChainOfResponsibilityPattern {
public interface Handler {
public void handle(HandlerLevel level);
}
public enum HandlerLevel{
TOWN_BOSS(1),CITY_BOSS(2),PROVINCE_BOSS(3);
HandlerLevel(int level){
this.level= level;
}
private int level;
}
public class TownHandler implements Handler{
private CityHandler cityHandler = new CityHandler();
public void handle(HandlerLevel level ) {
if(level.compareTo(HandlerLevel.TOWN_BOSS) > 0){
cityHandler.handle(level);
}else{
System.out.println("Handled by Town BOSS!");
}
}
}
public class CityHandler implements Handler {
private ProvinceHandler provinceHandler = new ProvinceHandler();
public void handle(HandlerLevel level) {
if(level.compareTo(HandlerLevel.CITY_BOSS) > 0){
provinceHandler.handle(level);
}else{
System.out.println("Handled by City BOSS!");;
}
}
}
public class ProvinceHandler implements Handler {
public void handle(HandlerLevel level) {
System.out.println("Handled by Province BOSS!");;
}
}
public void test(){
HandlerLevel h1 = HandlerLevel.TOWN_BOSS;
HandlerLevel h2 = HandlerLevel.CITY_BOSS;
HandlerLevel h3 = HandlerLevel.PROVINCE_BOSS;
Handler handler = new TownHandler();
handler.handle(h1);
handler.handle(h2);
handler.handle(h3);
}
public static void main(String[] args) {
new ChainOfResponsibilityPattern().test();
}
}
适合那种多级处理模式,分级别的处理的情况,责任链顾名思义就是在这条链上的人拥有不同的责任或者所权限;