• 设计模式


    责任链模式

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

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

    示例代码
     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
  • 相关阅读:
    iOS APM性能统计
    iOS promise
    静态代码检测工具Infer的部署
    ES读写数据的工作原理
    关于 Elasticsearch 内存占用及分配
    Elasticsearch中数据是如何存储的
    ES中的选举机制
    .net core 3.1 webapi解决跨域问题 GET DELETE POST PUT等
    .net framework WEBAPI跨域问题
    Angular前端项目发布到IIS
  • 原文地址:https://www.cnblogs.com/chenligeng/p/16325993.html
Copyright © 2020-2023  润新知