public void move(int x1, int y1, int x2, int y2) { // Chain and Responsibility Design Pattern MoveHandlerBase targetOutside = new TargetOutSideHandler(); MoveHandlerBase noPieceOnSource = new NoPieceOnSourceHandler(); MoveHandlerBase turn = new TurnHandler(); MoveHandlerBase targetOwnPiece = new TargetOwnPieceHandler(); MoveHandlerBase collision = new CollisionHandler(); MoveHandlerBase illigalMove = new IlligalMoveHandler(); MoveHandlerBase hit = new HitHandler(); MoveHandlerBase legalMove = new LegalMoveHandler(); targetOutside.SetNext(noPieceOnSource); noPieceOnSource.SetNext(turn); turn.SetNext(targetOwnPiece); targetOwnPiece.SetNext(collision); collision.SetNext(illigalMove); illigalMove.SetNext(hit); hit.SetNext(legalMove); targetOutside.Handle(x1, y1, x2, y2, Fields); }