Package com.eyugame.modle;/** * Responsibility Chain Mode * * @author JYC506 * *//* Event receiver */public Abstract class Eventreceiver {private Eve Ntreceiver nexteventreceiver;public void Setnexthandler (Eventreceiver nexteventreceiver) {this.nextEventReceiver = Nexteventreceiver;} Public Response HandleRequest (Request request) {if (This.isok (request)) {return this.getresponse ();} else {if ( This.nexteventreceiver! = null) {return this.nextEventReceiver.handleRequest (request);} else {System.out.println (" No appropriate event recipient "); return null;}}} Public abstract Response GetResponse ();p rotected Abstract Boolean isOk (Request request);p ublic static void Main (string[] args) {/* Creates a request */request requests = new request (COMMAND.EVENT2);/* Code */if in the non-responsible chain mode (request.getcommand () = = Command.event 1) {new EventReceiver1 (). HandleRequest (request);} else if (request.getcommand () = = Command.event2) {New EventReceiver2 ( ). HandleRequest (request);} else if (request.getcommand () = = Command.event3) {new EventReceiver3 (). HandleRequest (request);} else IF (request.getcommand () = = command.event4) {new EventReceiver4 (). HandleRequest (Request); /* Responsibility chain Mode Code *//* is not responsible chain mode is relatively clear point, low coupling, but more memory consumption, because all are in advance and all new objects */eventreceiver Receiver1 = new EventReceiver1 (); Eventreceiver receiver2 = new EventReceiver2 (); Eventreceiver Receiver3 = new EventReceiver3 (); Eventreceiver receiver4 = new EventReceiver4 (); Receiver1.setnexthandler (Receiver2); Receiver2.setnexthandler ( RECEIVER3); Receiver3.setnexthandler (receiver4); receiver1.handlerequest (request);}} /* Return result class */class Response {}/* requests */class request {Command command;public requested (Command command) {super (); This.command = C Ommand;} Public command GetCommand () {return command;} public void SetCommand (Command command) {this.command = command;}} /* Request Commands */enum Command {EVENT1, EVENT2, EVENT3, Event4}class EventReceiver1 extends Eventreceiver {@Overridepublic respons e GetResponse () {System.out.println ("event handler 1 handles and returns the result"); return null;} @Overrideprotected Boolean isOk (Request request) {return Request.getcommand () = = Command.EVENT1;}} Class EventReceiver2 extends Eventreceiver {@Overridepublic Response getResponse () {System.out.println ("event handler 2 processes and returns results "); return null;} @Overrideprotected Boolean isOk (Request request) {return Request.getcommand () = = Command.event2;}} Class EventReceiver3 extends Eventreceiver {@Overridepublic Response getResponse () {System.out.println ("event handler 3 processes and returns results "); return null;} @Overrideprotected Boolean isOk (Request request) {return Request.getcommand () = = Command.event3;}} Class EventReceiver4 extends Eventreceiver {@Overridepublic Response getResponse () {System.out.println ("event handler 4 processes and returns results "); return null;} @Overrideprotected Boolean isOk (Request request) {return Request.getcommand () = = Command.event3;}}
(Behavioral mode VI) responsibility chain model