package com.maom.design.D_19_ChainOfResponsibility;
/**
* @Title: D_19_ChainOfResponsibility
* @Description: 19_职责链模式
* @Author maohb
* @Version 1.0
*/
public class D_19_ChainOfResponsibility {
public static void main(String[] args) {
CarHandler headH = new CarHeadHandler();
CarHandler bodyH = new CarBodyHandler();
CarHandler tailH = new CarTailHandler();
// 组装顺序预先设定好,顺序是车头-->车身-->车尾
headH.setNextHandler(bodyH);
bodyH.setNextHandler(tailH);
// 调用职责链的链头来完成操作
headH.HandlerCar();
System.out.println("---------------");
// 顺序改变,希望是车身-->车头-->车尾
bodyH.setNextHandler(headH);
headH.setNextHandler(tailH);
bodyH.HandlerCar();
System.out.println("---------------");
// 简便操作
bodyH.setNextHandler(headH).setNextHandler(tailH);
bodyH.HandlerCar();
}
}
/** 职责链抽象类 */
abstract class CarHandler {
// 下一个职责
protected CarHandler carHandler;
// 设置下一个职责处理类
public CarHandler setNextHandler(CarHandler carHandler) {
this.carHandler = carHandler;
return this.carHandler;
}
// 抽象当前职责处理方法
public abstract void HandlerCar();
}
class CarHeadHandler extends CarHandler{
public void HandlerCar() {
System.out.println("组装车头");
// 调用下一步
if(this.carHandler != null) {
this.carHandler.HandlerCar();
}
}
}
class CarBodyHandler extends CarHandler {
public void HandlerCar() {
System.out.println("组装车身");
if(this.carHandler != null) {
this.carHandler.HandlerCar();
}
}
}
class CarTailHandler extends CarHandler{
public void HandlerCar() {
System.out.println("组装车尾");
if(this.carHandler != null) {
this.carHandler.HandlerCar();
}
}
}
设计模式笔记_19_职责链模式
最新推荐文章于 2024-09-10 17:07:09 发布