zoukankan      html  css  js  c++  java
  • 设计模式之职责链模式

    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

    结果:

  • 相关阅读:
    repeater绑定li实现不同样式
    fckeditor 上传图一直显示进度条
    Repeater 获取 DataItem 属性值
    js让显示层居中且有遮挡层(IE,火狐,Chrome均可)
    自定义控件学习(一)
    asp.net做系统时,经典的上左右Iframe
    const与readonly
    如何设置制定按钮为希望响应回车的真正按钮
    domestic的定义
    ebay api(解决固价与拍卖异常问题)
  • 原文地址:https://www.cnblogs.com/huaxueyihao/p/9153331.html
Copyright © 2011-2022 走看看