设计模式--职责链模式观察者模式




\



以汽车组装为例子来说明

package responsibility;

/**
 * 定义的汽车生产处理的抽象类
 * <p>Title: CarHandler</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月4日下午7:44:53
 * @version 1.0
 */
public abstract class CarHandler {
    //继承这个类必须实现的处理方法
	public abstract void HandlerCar();
	
	//对应的下一个处理过程
	public CarHandler  nextCarHandler;
	
	//设置下一个处理的Handler
    public CarHandler setNextHandler(CarHandler carHandler) {
		this.nextCarHandler = carHandler;
		return this.nextCarHandler;
	}
	
}

package responsibility;

/**
 * 组装车头
 * <p>Title: Header_CarHandler</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月4日下午8:19:35
 * @version 1.0
 */
public class Header_CarHandler extends CarHandler{

	/**
	 * 业务处理方法
	 */
	@Override
	public void HandlerCar() {
		System.out.println("组装车头");
		if(this.nextCarHandler !=null){
			//调用下一个过程的业务处理方法
			this.nextCarHandler.HandlerCar();
		}
	}
	
}



package responsibility;

/**
 * 车身的处理过程
 * <p>Title: Body_CarHandler</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月4日下午8:30:47
 * @version 1.0
 */
public class Body_CarHandler extends CarHandler{

	/**
	 * 处理车身的业务方法
	 * <p>Title: HandlerCar</p>
	 * <p>Description: </p>
	 * @see responsibility.CarHandler#HandlerCar()
	 */
	@Override
	public void HandlerCar() {
		
		System.out.println("组装车身...");
		if(this.nextCarHandler !=null){
			//调用下一个处理过程
			this.nextCarHandler.HandlerCar();
		}
	}
	
}

package responsibility;

/**
 * 车尾的处理过程
 * <p>Title: Body_CarHandler</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月4日下午8:30:47
 * @version 1.0
 */
public class Tail_CarHandler extends CarHandler{

	/**
	 * 处理车尾的业务方法
	 * <p>Title: HandlerCar</p>
	 * <p>Description: </p>
	 * @see responsibility.CarHandler#HandlerCar()
	 */
	@Override
	public void HandlerCar() {
		
		System.out.println("组装车尾...");
		if(this.nextCarHandler !=null){
			//调用下一个处理过程
			this.nextCarHandler.HandlerCar();
		}
	}
	
}

package responsibility;

public class MainClass {
	
	public static void main(String[] args) {
		
		CarHandler head_Carhandler = new Header_CarHandler();
		CarHandler body_Carhandler = new Body_CarHandler();
		CarHandler tail_Carhandler = new Tail_CarHandler();
		
		//组装顺序预先设定好,顺序是车头-->车身-->车尾
		head_Carhandler.setNextHandler(body_Carhandler);
		body_Carhandler.setNextHandler(tail_Carhandler);
		tail_Carhandler.setNextHandler(null);
		//调用职责链的链头来完成操作
		head_Carhandler.HandlerCar();
		
		//顺序改变,希望是车身-->车头--车尾
		body_Carhandler.setNextHandler(head_Carhandler);
		head_Carhandler.setNextHandler(tail_Carhandler);
		body_Carhandler.HandlerCar();
		
		//简便操作
		body_Carhandler.setNextHandler(head_Carhandler).setNextHandler(tail_Carhandler);
		body_Carhandler.HandlerCar();
	}
	
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值