} } class Girl{ public static void main(String[] args){ Boy boy=new Boy(false,false,true);//这个boy没有车,也没有房,不过很有责任心 Handler handler=new CarHandler(new HouseHandler(new ResponsibilityHandler(null)));//也可以使用setHanlder方法 handler.handleRequest(boy); } } 为了编这个例子,我死了好多脑细胞。。。。。。。。。。 下面再来个不纯的: 为了让减少脑细胞的死亡数量,这个例子我就不编了,用网上一位大侠所写的。 这个例子模拟了汽车组装的过程:假设一辆汽车从生产到出厂要经过以下四个过程:组装车头,车身,车尾,以及上色。 abstract class CarHandler { public static final int STEP_HANDLE_HEAD = 0; public static final int STEP_HANDLE_BODY = 0; public static final int STEP_HANDLE_TAIL = 0; public static final int STEP_HANDLE_COLOR = 3;
protected CarHandler carHandler;
public CarHandler setNextCarHandler(CarHandler carHandler) { this.carHandler = carHandler;
return this.carHandler; }
abstract public void handleCar(int lastStep); }
class CarHeadHandler extends CarHandler {
@Override public void handleCar(int lastStep) { if (STEP_HANDLE_HEAD <= lastStep) { System.out.println("Handle car"s head."); }
if (carHandler != null) { carHandler.handleCar(lastStep); } } }
class CarBodyHandler extends CarHandler {
@Override public void handleCar(int lastStep) { if (STEP_HANDLE_BODY <= lastStep) { System.out.println("Handle car"s body."); }
if (carHandler != null) { carHandler.handleCar(lastStep); } } }
class CarTailHandler extends CarHandler {
@Override public void handleCar(int lastStep) { if (STEP_HANDLE_TAIL <= lastStep) { System.out.println("Handle car"s tail."); }
if (carHandler != null) { carHandler.handleCar(lastStep); } } }
class CarColorHandler extends CarHandler {
@Override public void handleCar(int lastStep) { if (STEP_HANDLE_COLOR == lastStep) { System.out.println("Handle car"s color."); }
if (carHandler != null) { carHandler.handleCar(lastStep); } } } public class Client {
public static void main(String[] args) { //工作流程1:先组装车头,然后是车身,车尾,最后是上色 System.out.println("---workfolow1----"); CarHandler carHandler1 = new CarHeadHandler(); carHandler1.setNextCarHandler( new CarBodyHandler()).setNextCarHandler( new CarTailHandler()).setNextCarHandler( new CarColorHandler());
//工作流程2:因为某种原因,我们需要先组装车尾,然后是车身,车头,最后是上色 System.out.println("---workfolow2---"); CarHandler carHandler2 = new CarTailHandler(); carHandler2.setNextCarHandler( new CarBodyHandler()).setNextCarHandler( new CarHeadHandler()).setNextCarHandler( new CarColorHandler());