职责链模式

package org.designPattern.cor19;

public class CarBodyHandler extends CarHandler {

    public void HandlerCar() {
        System.out.println("组装车身");
        if(this.carHandler != null) {
            this.carHandler.HandlerCar();
        }
    }

}
package org.designPattern.cor19;

public abstract class CarHandler {
    protected CarHandler carHandler;
    
    public CarHandler setNextHandler(CarHandler carHandler) {
        this.carHandler = carHandler;
        return this.carHandler;
    }
    
    public abstract void HandlerCar();
}

package org.designPattern.cor19;

public class CarHeadHandler extends CarHandler{

    public void HandlerCar() {
        System.out.println("组装车头");
        if(this.carHandler != null) {
            this.carHandler.HandlerCar();
        }
    }

}

package org.designPattern.cor19;

public class CarTailHandler extends CarHandler{

    public void HandlerCar() {
        System.out.println("组装车尾");
        if(this.carHandler != null) {
            this.carHandler.HandlerCar();
        }
    }

}

package org.designPattern.cor19;

public class MainClass {
    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();
        
        //简便操作
        bodyH.setNextHandler(headH).setNextHandler(tailH);
        bodyH.HandlerCar();
        
        
    }
}



你可能感兴趣的:(职责链模式)