Skip to content
Prev Previous commit
Next Next commit
Chain of Responsibility design pattern - BONUS EXAMPLE - Number ident…
…ifier program
  • Loading branch information
premaseem committed Mar 7, 2018
commit 1050aad11d35d6ddcf15d4157e7c45a1dc7921d7
13 changes: 0 additions & 13 deletions pattern/src/com/premaseem/Client.java

This file was deleted.

13 changes: 0 additions & 13 deletions patternBonus/src/com/premaseem/Client.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.premaseem.chainOfResponsibility.numberHandler;

/*
@author: Aseem Jain
@title: Design Patterns with Java 9
@link: https://premaseem.wordpress.com/category/computers/design-patterns/
*/

import java.util.Scanner;

public class Client {

public static void main(String[] args) {

System.out.println("Welcome to Number identifier program designed using Chain of Responsibility ");
Scanner scan = new Scanner(System.in);

NumberChain positiveNumberHandler = new PositiveNumberHandler();
NumberChain negativeNumberHandler = new NegativeNumberHandler();
NumberChain neutralNumberHandler = new ZeroNumberHandler();

// Setting up the chain
positiveNumberHandler.setNextHandler(negativeNumberHandler);
negativeNumberHandler.setNextHandler(neutralNumberHandler);

String repeatRunFlag = "y";
while (!repeatRunFlag.equalsIgnoreCase("no")) {
System.out.println("Please enter any number 0, less then or greater then zero eg. -22 or 89 ? ");
int choice = scan.nextInt();
positiveNumberHandler.handler(choice);

System.out.println("=============================");

System.out.println("Press No to Exit and any other character to repeat .... ");
try {
repeatRunFlag = scan.next();
} catch (Exception e) {
repeatRunFlag = "n";
}
}

System.out.println("\n $$$$$$$$$$$$$$$$$$$$ Thanks by Prem Aseem $$$$$$$$$$$$$$$$$$$$$$ \n ");
System.out.println("\n $$$$$$$$$$$$$$$$$$$$$ www.premaseem.me $$$$$$$$$$$$$$$$$$$$$$ \n ");

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.premaseem.chainOfResponsibility.numberHandler;

public abstract class NumberChain {

NumberChain nextHandler = null;

public NumberChain setNextHandler(NumberChain nextHandler) {
this.nextHandler = nextHandler;
return this.nextHandler;
}

public abstract void handler(int requestNumber);

}

class PositiveNumberHandler extends NumberChain {

@Override
public void handler(int requestNumber) {
if (requestNumber > 0) {
System.out.println(this.getClass().getSimpleName() +" handled number " + requestNumber);
}else{
if(nextHandler!=null)
nextHandler.handler(requestNumber);
}
}
}

class NegativeNumberHandler extends NumberChain {

@Override
public void handler(int requestNumber) {
if (requestNumber < 0) {
System.out.println(this.getClass().getSimpleName() +" handled number " + requestNumber);
}else{
if(nextHandler!=null)
nextHandler.handler(requestNumber);
}
}
}

class ZeroNumberHandler extends NumberChain {

@Override
public void handler(int requestNumber) {
if (requestNumber == 0) {
System.out.println(this.getClass().getSimpleName() +" handled number " + requestNumber);
}else{
if(nextHandler!=null)
nextHandler.handler(requestNumber);
}
}
}