• 设计模式之职责链模式


    Chain of Responsibility(CoR) 模式也叫职责链模式,是行为模式之一,该模式构造一系列分别担当不同职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。

    抽象父类CarHandler,父类里持有本身的引用,且实现set方法:

     1 package com.Design.cor1;
     2 
     3 public abstract class CarHandler {
     4     
     5     protected CarHandler nextCarHandler;
     6     
     7     public abstract void HandlerCar();
     8     
     9     public void setNextCarHandler(CarHandler carHandler){
    10         this.nextCarHandler = carHandler;
    11     }
    12 }
    View Code

    具体的实现类CarHeaderHandler:

     1 package com.Design.cor1;
     2 
     3 public class CarHeaderHandler extends CarHandler {
     4 
     5     @Override
     6     public void HandlerCar() {
     7         System.out.println("组装车头");
     8         if(this.nextCarHandler != null){
     9             this.nextCarHandler.HandlerCar();
    10         }
    11     }
    12     
    13     
    14 
    15 }
    View Code

    具体的实现类CarBodyHandler:

     1 package com.Design.cor1;
     2 
     3 public class CarBodyHandler extends CarHandler {
     4 
     5     @Override
     6     public void HandlerCar() {
     7         System.out.println("组装车身");
     8         if(this.nextCarHandler != null){
     9             this.nextCarHandler.HandlerCar();
    10         }
    11     }
    12 
    13 }
    View Code

    具体的实现类CarTailHandler:

     1 package com.Design.cor1;
     2 
     3 public class CarTailHandler extends CarHandler {
     4 
     5     @Override
     6     public void HandlerCar() {
     7         System.out.println("组装车尾");
     8         if(this.nextCarHandler != null){
     9             this.nextCarHandler.HandlerCar();
    10         }
    11     }
    12 
    13 }
    View Code

    测试代码:

     1 package com.Design.cor1;
     2 
     3 public class MainClass {
     4     
     5     public static void main(String[] args) {
     6         CarHandler headH = new CarHeaderHandler();
     7         CarHandler carBodyHandler = new CarBodyHandler();
     8         CarTailHandler carTailHandler = new CarTailHandler();
     9         
    10         headH.setNextCarHandler(carBodyHandler);
    11         carBodyHandler.setNextCarHandler(carTailHandler);
    12         
    13         headH.HandlerCar();
    14         
    15     }
    16     
    17 }
    View Code

    结果:

  • 相关阅读:
    Centos7.6安装教程 && history设置显示执行命令的时间
    C# 调用第三方webapi 接口的示例(使用httpclient)
    asp.net core 上传文件
    Sql中CHARINDEX用法---判断数据库某个字段是否包含某个字符
    ASP.NET上传文件出现“404-找不到文件或目录”的解决办法
    C# 中转换的几种方式
    C# 向文件写入和读取文件内容
    C# 中正则表达式
    C# 写的通用得到富文本框中的图片路径
    C# 正则表达式输入验证必须为汉字
  • 原文地址:https://www.cnblogs.com/huaxueyihao/p/9153331.html
Copyright © 2020-2023  润新知