责任链模式
定义:责任链模式,主要是处理责任相同,程度不同
优点:降低了代码之间的耦合性,无需关心请求,主要是让不通的类,处理不同的请求,其他类只负责传递请求里面的数据就可以,让请求到对应的类里面处理具体的逻辑
示例代码
View Code
1 public abstract class Programmer { 2 3 protected Programmer next; 4 5 public void setNext(Programmer next) { 6 this.next = next; 7 } 8 9 abstract void handler(Bug bug); 10 } 11 12 13 public class NormalProgrammer extends Programmer{ 14 15 @Override 16 void handler(Bug bug) { 17 if (bug.value > 20 && bug.value <= 50){ 18 solve(bug); 19 } else if (next != null){ 20 next.handler(bug); 21 } 22 } 23 24 private void solve(Bug bug) { 25 System.out.println("普通程序员解决了一个难度为 " + bug.value + " 的 bug"); 26 } 27 28 } 29 30 public class NewbieProgrammer extends Programmer{ 31 32 @Override 33 void handler(Bug bug) { 34 if (bug.value > 0 && bug.value <=20){ 35 solve(bug); 36 } else if (next != null){ 37 next.handler(bug); 38 } 39 } 40 41 private void solve(Bug bug) { 42 System.out.println("菜鸟程序员解决了一个难度为 " + bug.value + " 的 bug"); 43 } 44 } 45 46 47 public class GoodProgrammer extends Programmer{ 48 49 50 @Override 51 void handler(Bug bug) { 52 if (bug.value > 50 && bug.value <= 100) { 53 solve(bug); 54 } else if (next != null) { 55 next.handler(bug); 56 } 57 } 58 59 private void solve(Bug bug) { 60 System.out.println("优秀程序员解决了一个难度为 " + bug.value + " 的 bug"); 61 } 62 } 63 64 65 public static void main(String[] args) { 66 NewbieProgrammer newbie = new NewbieProgrammer(); 67 NormalProgrammer normal = new NormalProgrammer(); 68 GoodProgrammer good = new GoodProgrammer(); 69 70 Bug easy = new Bug(20); 71 Bug middle = new Bug(50); 72 Bug hard = new Bug(100); 73 74 //组成责任链 75 newbie.setNext(normal); 76 normal.setNext(good); 77 78 //调用链 79 newbie.handler(easy); 80 newbie.handler(middle); 81 newbie.handler(hard); 82 } 83 84 public class Bug { 85 86 // bug 的难度值 87 int value; 88 89 public Bug(int value) { 90 this.value = value; 91 } 92 }