设计模式

责任链模式

定义:责任链模式,主要是处理责任相同,程度不同

优点:降低了代码之间的耦合性,无需关心请求,主要是让不通的类,处理不同的请求,其他类只负责传递请求里面的数据就可以,让请求到对应的类里面处理具体的逻辑 

示例代码
 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 }
View Code

 

posted on 2022-05-30 10:40  JETIME庚  阅读(24)  评论(0编辑  收藏  举报

导航